Search found 185 matches
- 2022-12-04, 15:13:13
- Forum: forwardcom forum
- Topic: Integer division by zero
- Replies: 4
- Views: 23648
Re: Integer division by zero
Hi Webenson What you propose is indeed the solution I have implemented. Performance counter number 16 will count various errors and show the code address where the first error occurred. This is a cheap solution to implement in hardware. Division by 0 gives INT_MAX, INT_MIN, or UINT_MAX. Returning 0 ...
- 2022-12-03, 6:31:31
- Forum: forwardcom forum
- Topic: Proposals for next version
- Replies: 16
- Views: 89408
Re: Proposals for next version
You are right that speculation is quite expensive in terms of hardware. ForwardCom needs less speculation because there are no numerical error traps. A processor with out-of-order capabilities but no speculation might be attractive. (It could decode both sides of a 2-way branch to reduce pipeline bu...
- 2022-12-02, 8:02:12
- Forum: forwardcom forum
- Topic: Proposals for next version
- Replies: 16
- Views: 89408
Re: Proposals for next version
Hubert, the idea of a priority hint makes sense. A NOP instruction has many unused bits that can be used as various hints. On the other hand, if the compiler knows which instructions should have high priority, it would simply put these instructions first. An out-of-order processor will reorder instr...
- 2022-12-02, 7:41:06
- Forum: forwardcom forum
- Topic: Integer division by zero
- Replies: 4
- Views: 23648
Re: Integer division by zero
Hubert, a % b = a will satisfy a % b == a - (a/b)*b in all cases. There is a modulo instruction, and it is easy to implement because the existing division hardware gives the remainder as well, whether you need it or not. I have considered to make division by 0 give 0, but this would increase the ris...
- 2022-11-27, 16:22:42
- Forum: forwardcom forum
- Topic: Integer division by zero
- Replies: 4
- Views: 23648
Integer division by zero
I have almost finished making the division hardware for the ForwardCom softcore (using a radix-4 division loop). Now I have to decide what to do with integer division by zero. I have tried to google what other microprocessors do with integer division by zero. X86 makes an error trap. ARM and PowerPC...
- 2022-10-23, 14:06:55
- Forum: forwardcom forum
- Topic: Proposals for next version
- Replies: 16
- Views: 89408
Re: Proposals for next version
Thank you for your comments. Regarding speculative read The proposed speculative read should be a special instruction for this purpose. Advantages: no waste of RAM for padding space. Disadvantages: messy hardware logic; does not allow all addressing modes. The alternative is to insert a padding spac...
- 2022-10-17, 12:41:12
- Forum: forwardcom forum
- Topic: Proposals for next version
- Replies: 16
- Views: 89408
Proposals for next version
I am beginning to work on version 1.12 of ForwardCom. I have several proposals for changes that I will open up for discussion: 1. Speculative memory read I would like an option for reading from memory without causing a trap in case the address is invalid. A read from an illegal address should produc...
- 2022-09-16, 4:38:22
- Forum: forwardcom forum
- Topic: New CPU simulator
- Replies: 1
- Views: 15922
Re: New CPU simulator
This looks very exciting. I am looking forward to see your results.
- 2022-08-17, 5:48:27
- Forum: forwardcom forum
- Topic: Bit addressing
- Replies: 8
- Views: 32653
Re: Bit addressing
Your multicore sieve of Eratosthenes would be very expensive to implement in hardware because the data cache needs to combine single bits from each core.
- 2022-05-13, 14:05:14
- Forum: forwardcom forum
- Topic: Bit addressing
- Replies: 8
- Views: 32653
Re: Bit addressing
ForwardCom has many instructions for bit manipulation including instructions to extract, insert, or move bit fields with an arbitrary number of bits in each element. This allows efficient packing of information. If you have many booleans then it is most efficient to make bit vectors that can handle ...
- 2022-04-13, 6:17:10
- Forum: forwardcom forum
- Topic: Memory safety enforcement using CHERI
- Replies: 3
- Views: 19723
Re: Memory safety enforcement using CHERI
I am somewhat skeptical too. CHERI is proposing a very costly solution to a problem that can be solved in other ways. I haven't looked too deeply into CHERI, but as I understand it, it requires a lot of changes in both hardware and software: The hardware ISA must have an extra set of special 128-bit...
- 2022-01-31, 7:16:09
- Forum: forwardcom forum
- Topic: Nonlocal control flow
- Replies: 10
- Views: 31229
Re: Nonlocal control flow
On some processors, yes.does that mean there is no BTB cost for forward never-taken branches?
- 2022-01-20, 9:12:45
- Forum: forwardcom forum
- Topic: Nonlocal control flow
- Replies: 10
- Views: 31229
Re: Nonlocal control flow
Isn't this a case where forwardcom would do much better than traditional cpus? Because the call stack is expressed explicitly, it is the same as the return prediction stack. So after you install a new call stack, you maybe pipeline stall, but then start start predicting returns correctly from it. Y...
- 2022-01-20, 7:37:28
- Forum: forwardcom forum
- Topic: Nonlocal control flow
- Replies: 10
- Views: 31229
Re: Nonlocal control flow
Thank you for trying to find weak points in my system. I think that nonlocal returns may be implemented more efficiently as a sequence of normal returns. 1. Why? Why is it more efficient to return multiple times than just once? Because it doesn't mess up the return prediction. A non-local return wil...
- 2022-01-19, 11:09:59
- Forum: forwardcom forum
- Topic: Nonlocal control flow
- Replies: 10
- Views: 31229
Re: Nonlocal control flow
I think that nonlocal returns may be implemented more efficiently as a sequence of normal returns. It is possible to have multiple data stacks on ForwardCom. The compiler could use a register or an extra stack or a particular stack space to keep track of the nesting level. Error handling can also be...
- 2022-01-19, 7:51:14
- Forum: forwardcom forum
- Topic: Nonlocal control flow
- Replies: 10
- Views: 31229
Re: Nonlocal control flow
You are right that stack unwinding requires privileged instructions. Stack unwinding takes place in the following cases: Exception trapping (try/catch) in object oriented languages Debugging longjmp in C Exception trapping and debugging require privileged access anyway. A program that has a large nu...
- 2021-12-13, 7:13:36
- Forum: forwardcom forum
- Topic: How to avoid memory fragmentation
- Replies: 5
- Views: 16130
Re: How to avoid memory fragmentation
The more fragmented the memory becomes, the more complicated becomes the access: In simple cases where there are few processes running and plenty of vacant RAM, you don't need any address translation. All you need is a small memory map with a few variable-size entries. This memory map can stay on-ch...
- 2021-12-11, 7:19:39
- Forum: forwardcom forum
- Topic: How to avoid memory fragmentation
- Replies: 5
- Views: 16130
Re: How to avoid memory fragmentation
Thank you for your interesting comments. kyle-forward wrote: Many parsers and similar algorithms use recursion True. This even includes the parser in the ForwardCom assembler. But the recursion level is not very deep. How are things like ASRL going to be done? The security problems that "Addres...
- 2021-11-15, 15:18:37
- Forum: forwardcom forum
- Topic: Proposal to drop tiny instructions
- Replies: 11
- Views: 30524
Re: Proposal to drop tiny instructions
Thanks for the link. If you want to mix half-size (16 bits) with word size (32-bits) instructions then all addresses would need 16-bit granularity. Adding one bit at the bottom means removing one bit at the top. In other words, the length you can jump with an 8-bit address offset is halved. Furtherm...
- 2021-11-12, 10:45:57
- Forum: forwardcom forum
- Topic: Instruction boundaries
- Replies: 1
- Views: 12353
Re: Instruction boundaries
Thanks for the proposal. This has been proposed before. It would be difficult to find space for the extra bits which might be better used for other purposes, and it will make linkers, loaders, and other tools more complicated if they have to split 32-bit and 64-bit constants into non-contiguous fiel...
- 2021-09-11, 7:35:14
- Forum: forwardcom forum
- Topic: Branch instruction with a "one-hot" bitmask equality comparison
- Replies: 1
- Views: 12797
Re: Branch instruction with a "one-hot" bitmask equality comparison
Thanks for the idea. Your example can be implemented in C as if (1 << x & 0b1001001000){} Both Gcc and Clang compilers are actually using this optimization. This can be implemented in ForwardCom assembly: int r1 = 0b1001001000 int r2 = [x] bit_test(r1,r2), jump_true Whatever The bit_test will be...
- 2021-08-08, 11:31:07
- Forum: forwardcom forum
- Topic: New softcore
- Replies: 0
- Views: 22696
New softcore
I have been working hard on developing a softcore implementation of ForwardCom, and I am now proud to publish the first version on Github. Features: Implemented on Nexys A7 FPGA board with Xilinx Artix 7 100T FPGA Coded in System Verilog with an open license Everything is made from scratch. No borro...
- 2021-06-28, 11:34:58
- Forum: forwardcom forum
- Topic: Universal boolean instruction
- Replies: 5
- Views: 17343
Re: Universal boolean instruction
Thank you for your comment. I was not aware of MRISC32. It looks like we have got some of the same ideas. ForwardCom allows instructions to be up to three 32-bit words. This makes it possible to overcome the problem of cramming a lot of information into a single code word, that most RISC designs suf...
- 2021-06-28, 6:33:47
- Forum: forwardcom forum
- Topic: Universal boolean instruction
- Replies: 5
- Views: 17343
Re: Universal boolean instruction
Now I have tried to synthesize it in an FPGA. The solution with a complete truth table is using 18% more slices and 40% more LUTs than the bitwise_logic circuit I described above. The truth table implementation is using less resources than I expected because the FPGA has efficient ways of implementi...
- 2021-06-28, 6:16:26
- Forum: forwardcom forum
- Topic: input/output instructions
- Replies: 8
- Views: 23777
Re: input/output instructions
Not 100%. Hubert has fertilized it with valuable insight in hardware design :-)