Search found 178 matches

by agner
2018-08-25, 5:03:06
Forum: forwardcom forum
Topic: Interesting new ISA: MRISC32
Replies: 13
Views: 28309

Re: Interesting new ISA: MRISC32

Thanks for the link. The MRISC32 ISA has some of the same ideas as ForwardCom. Maybe there is a basis for collaboration. I have added my comment at http://www.bitsnbites.eu/the-mrisc32-a- ... ent-219160
by agner
2018-07-20, 6:06:33
Forum: forwardcom forum
Topic: Is ForwardCom LLVM-friendly
Replies: 2
Views: 13443

Re: Is ForwardCom LLVM-friendly

LLVM would be my first choice for a compiler for ForwardCom. I haven't had the time to look into it, so I don't know if there are any obstacles. The variable-length vectors and vector loops might be a problem.
by agner
2018-07-03, 5:19:59
Forum: forwardcom forum
Topic: Forwardcom and caching models
Replies: 15
Views: 34700

Re: Forwardcom and caching models

But could compilers be made to have such abilities? Forget the past -- what about now? Yes. For example the Intel compiler can put prefetching of data into a separate thread running in the same CPU core with simultaneous multithreading (= hyperthreading in Intel lingo). I generally don't like simul...
by agner
2018-06-28, 5:46:52
Forum: forwardcom forum
Topic: Forwardcom and patents
Replies: 4
Views: 14762

Re: Forwardcom and patents

In my opinion, the patent system as it works today is rotten. The patent system is intended to stimulate invention and innovation, but today it is doing the opposite. Hi tech companies are filing scores of patents, not to protect their inventions but for having weapons to use in patent wars. For exa...
by agner
2018-06-13, 17:26:26
Forum: forwardcom forum
Topic: Forwardcom simulations
Replies: 3
Views: 13100

Re: Forwardcom simulations

The tools that I have developed so far can emulate the ForwardCom processor but not simulate memory latencies. The instruction set is designed for making OoO execution efficient. The compiler does not need to do this. Only the old x87 instructions use 80-bit intermediaries. Most other instruction se...
by agner
2018-05-24, 11:07:49
Forum: forwardcom forum
Topic: NAN propagation instead of fault trapping. Can we avoid speculative execution?
Replies: 3
Views: 15105

NAN propagation instead of fault trapping. Can we avoid speculative execution?

Floating point calculations can generate infinity (INF) and not-a-number (NAN) in case of errors. These codes will propagate to the end result of a sequence of calculations in most cases. This is a convenient way of detecting floating point errors, and it is more efficient than using traps (software...
by agner
2018-05-20, 5:10:35
Forum: forwardcom forum
Topic: Forwardcom and caching models
Replies: 15
Views: 34700

Re: Forwardcom and caching models

ForwardCom could use any caching model. Experiments with alternative forms of caching are welcome. I don't think that 128 kB would be enough if you have large vector registers, but the cache might be subdivided into 'lanes' that align with the data lanes of the CPU. Quoting from the manual: The Forw...
by agner
2018-04-21, 6:01:23
Forum: forwardcom forum
Topic: One flexible register
Replies: 1
Views: 10960

Re: One flexible register

The difference between a vector register and a scalar register is that you can handle the entire vector register with a single operation. If you want to add 1 to four 32-bit registers you need four instructions. If you want to add 1 to all four elements of a 128 bit vector register you only need one...
by agner
2018-04-14, 9:23:01
Forum: forwardcom forum
Topic: Emulating multiple output instructions with caching
Replies: 6
Views: 15298

Re: Emulating multiple output instructions with caching

csdt wrote: the multiple instruction scheme is also applicable to the division (just call div and rem) Yes, but not to extended division (divide a 64 bit integer by a 32 bit integer to get a 32 bit quotient and a 32 bit remainder). is there any performance critical codes that require to compute div ...
by agner
2018-04-13, 19:03:49
Forum: forwardcom forum
Topic: Emulating multiple output instructions with caching
Replies: 6
Views: 15298

Re: Emulating multiple output instructions with caching

csdt wrote: Back on the add with carry, is it really necessary to have a single instruction to get both the result and the carry? It might be worth considering recalculating the sum to get the carry. An integer addition is pretty fast, so recalculating it would not incur too much overhead. That's po...
by agner
2018-04-13, 10:43:43
Forum: forwardcom forum
Topic: Emulating multiple output instructions with caching
Replies: 6
Views: 15298

Re: Emulating multiple output instructions with caching

The ForwardCom instruction set has 'mul' instructions which give the low part of a product, 'mul_hi' gives the high part, and 'mul_ex' gives double-size products as a vector. Vector elements with even-numbered position (0, 2, 4, ..) contain the low parts while odd elements (1, 3, 5, ..) contain the ...
by agner
2018-03-30, 17:28:39
Forum: forwardcom forum
Topic: All the tools are working now
Replies: 0
Views: 26054

All the tools are working now

All the binary tools for ForwardCom are working now: assembler, disassembler, linker, library manager, emulator, debugger. These tools can run in Windows and Linux. I have also made function libraries: libc.li contains the most important standard C functions. A library of mathematical functions math...
by agner
2018-03-14, 20:19:15
Forum: forwardcom forum
Topic: Forwardcom possible execution pipeline?
Replies: 11
Views: 21146

Re: Forwardcom possible execution pipeline?

Yes, but not for multiplication and division. I don't want to have ALU operations with different latencies combined with conditional jump because it will complicate the pipeline.
by agner
2018-03-11, 5:32:26
Forum: forwardcom forum
Topic: Forwardcom possible execution pipeline?
Replies: 11
Views: 21146

Re: Forwardcom possible execution pipeline?

The C language is particularly bad for overflow checking. It's not safe to detect signed integer overflow after it has occurred because the compiler is allowed to optimize it away. I've seen a very nasty bug because I checked for overflow in this way. See https://codereview.stackexchange.com/questio...
by agner
2018-03-10, 5:44:53
Forum: forwardcom forum
Topic: Forwardcom possible execution pipeline?
Replies: 11
Views: 21146

Re: Forwardcom possible execution pipeline?

Regarding integer fault traps. Yes, I would love to avoid fault trapping for both integer and floating point calculations altogether. In addition to the problems that Hubert point to, there is the problem that the behavior depends on vector length. A trap may happen at different times in a loop sequ...
by agner
2018-03-05, 12:32:25
Forum: forwardcom forum
Topic: Decimal floating point
Replies: 3
Views: 10923

Re: Decimal floating point

Why would a financial application need decimal floating point? You can get exactness just by multiplying by 100 so that you are counting cents rather than $ or € or whatever. BTW, the x86 instruction set has instructions for decimal numbers but they were never used, so they have been removed in x86-...
by agner
2018-03-04, 10:21:02
Forum: forwardcom forum
Topic: Decimal floating point
Replies: 3
Views: 10923

Re: Decimal floating point

I prefer computers to use binary numbers. This is more efficient. The standards for decimal floating point numbers are certainly not easier to deal with than binary.
by agner
2018-02-25, 10:36:39
Forum: forwardcom forum
Topic: Forwardcom possible execution pipeline?
Replies: 11
Views: 21146

Re: Forwardcom possible execution pipeline?

Thank you Kulasko.

This is very similar to what I have in mind. The number of parallel units may wary of course. Memory write may be after the ALU's, but there are few, if any, instructions that use both ALU and memory write.
by agner
2018-02-25, 10:30:39
Forum: forwardcom forum
Topic: What to do with unclear standards?
Replies: 8
Views: 19559

What to do with unclear standards?

The C++ standard has many cases of 'undefined' behavior which can have quite bad consequences. The ForwardCom design should avoid this and behave in a well-defined and predictable way as far as possible. Here I will propose some solutions to the undefined and unclear situations: 1. Signed integer ov...
by agner
2018-02-24, 13:18:46
Forum: forwardcom forum
Topic: Forwardcom possible execution pipeline?
Replies: 11
Views: 21146

Re: Forwardcom possible execution pipeline?

Thanks for your detailed analysis. I think it is more efficient to not split instructions into micro-ops. The same entry in the pipeline or reservation station will access address generation unit, read memory operands, wait for missing operands, and go to an execution unit. You are right that the de...
by agner
2018-02-11, 16:50:20
Forum: forwardcom forum
Topic: Source code changes for Forwardcom compatibility
Replies: 5
Views: 11097

Re: Source code changes for Forwardcom compatibility

Would the musl C library be the best choice for ForwardCom initially ... ?
Yes, musl looks useful. I intend to write the most common library functions in ForwardCom assembly, the rest might use C code from musl.
by agner
2018-02-06, 12:21:52
Forum: forwardcom forum
Topic: Virtualization
Replies: 3
Views: 9432

Re: Virtualization

JoeDuarte wrote:
Would the complexity of the microcode be affected by limiting FC's virtualization support to identical guest OSes?
Yes. You wouldn't need any hardware support for that - just a subdivision of the memory space.
by agner
2018-02-02, 6:57:27
Forum: forwardcom forum
Topic: Different instruction sets on different cores
Replies: 18
Views: 30137

Re: Different instruction sets on different cores

Hubert wrote: Video games use TONS of floating point math ForwardCom has optional support for half precision floating point vectors. Do you think that video and sound applications can use half precision? Neural networks is another application for half precision. The operand type field in the instruc...
by agner
2018-01-24, 7:03:24
Forum: forwardcom forum
Topic: Source code changes for Forwardcom compatibility
Replies: 5
Views: 11097

Re: Source code changes for Forwardcom compatibility

A C++ compiler for ForwardCom is definitely on my wish list. It might be implemented as a back-end to Clang or Gcc. Standard C and C++ programs should compile without problems as long as they don't rely on platform-specific features such as inline assembly or intrinsic functions. Certain things work...
by agner
2018-01-24, 6:20:06
Forum: forwardcom forum
Topic: Virtualization
Replies: 3
Views: 9432

Re: Virtualization

Virtualization requires complex micro-coded instructions. This is something I want to avoid in order to keep the hardware simple and efficient. These features can be added later if needed, but many applications will not need them.