Search found 181 matches
- 2021-06-17, 18:44:53
- Forum: forwardcom forum
- Topic: Load From Const Array Instruction
- Replies: 3
- Views: 7365
Re: Load From Const Array Instruction
The solution that Hubert proposes is already possible with the present design. ForwardCom supports a separate read-only data section addressed relative to IP. An addressing mode with [IP + offset + scaled index] is also supported. I don't remember if we have discussed this before, but it is certainl...
- 2021-06-10, 18:32:36
- Forum: forwardcom forum
- Topic: Load From Const Array Instruction
- Replies: 3
- Views: 7365
Re: Load From Const Array Instruction
Thank you for your suggestion. A problem with your proposal is that jumps are costly, especially if the pipeline is long, because they interrupt the prefetching and decoding of instructions. Another problem is that the table needs multiple copies if it is accessed from multiple points in the code. I...
- 2021-04-13, 5:28:33
- Forum: forwardcom forum
- Topic: Macro-op fusion as an intentional instruction set design choice
- Replies: 4
- Views: 17652
Re: Macro-op fusion as an intentional instruction set design choice
The x86 instruction set introduced prefixes long ago. Today, there is a lot of different prefixes that are 1, 2, 3, and 4 bytes long. There is no limit to how many prefixes an x86 instruction can have as long as the complete instruction is no more than 15 bytes long. This is a nightmare to decode. T...
- 2021-03-22, 9:58:14
- Forum: forwardcom forum
- Topic: Default integer size 32 or 64 bits?
- Replies: 7
- Views: 20567
Default integer size 32 or 64 bits?
Some ForwardCom instructions are available in a short form using format template C. Template C has one register field, 16 bits of immediate data, and no operand size field. This will fit an instruction like for example int r1 += 1000 I am in doubt whether the integer size should be 32 bits or 64 bit...
- 2021-03-19, 16:44:14
- Forum: forwardcom forum
- Topic: Rollbackable L1 Data Cache Design?
- Replies: 7
- Views: 12941
Re: Rollbackable L1 Data Cache Design?
Functions that receive a pointer can check if it is aligned. Functions like memcpy do that. But it is unrealistic to require that all functions have multiple paths for aligned and unaligned pointers. In most situations you can require that pointers be aligned according to the data size. Alignment of...
- 2021-03-15, 7:15:08
- Forum: forwardcom forum
- Topic: Rollbackable L1 Data Cache Design?
- Replies: 7
- Views: 12941
Re: Rollbackable L1 Data Cache Design?
In most cases, the compiler will know whether memory is aligned or not. Standard functions like memcpy are checking whether the pointers are aligned before it decides which method is optimal. Shifting data to make it aligned can be done in software. This may be inconvenient for the programmer, but i...
- 2021-03-13, 7:17:19
- Forum: forwardcom forum
- Topic: Rollbackable L1 Data Cache Design?
- Replies: 7
- Views: 12941
Re: Rollbackable L1 Data Cache Design?
Thank you Hubert for the explanation. It is a relevant discussion how caching can be made simpler. The ForwardCom design may have restrictions on alignment. Unaligned memory accesses could be split into two, or simply not allowed. The memcpy library function would need to shift data if source and de...
- 2021-03-02, 8:01:23
- Forum: forwardcom forum
- Topic: Implications of ForwardCom memory management approach
- Replies: 15
- Views: 27151
Re: Implications of ForwardCom memory management approach
When I google for "shared virtual address model" I get something with CPU and GPU sharing the same virtual addresses, but still with fixed-size pages. I think there is little need for a GPU when the CPU has long vectors. But address translation after the cache may be a very good idea. I wo...
- 2021-01-29, 6:51:07
- Forum: forwardcom forum
- Topic: Using CPU cores as GPU
- Replies: 3
- Views: 6365
Re: Using CPU cores as GPU
Thank you for the reference. I am not an expert in graphics processing, but I think that ForwardCom is well suited for adding graphics processing instructions. The fundamental data types and elementary instructions proposed by Pixlica are available in ForwardCom. ForwardCom has the further advantage...
- 2020-11-21, 6:59:12
- Forum: forwardcom forum
- Topic: input/output instructions
- Replies: 8
- Views: 23305
Re: input/output instructions
Hubert Lamontagne, I am not sure you would want to have a a large graphics coprocessor. I would prefer to have a multicore ForwardCom processor with large vectors rather than a smaller ForwardCom processor connected to a graphics coprocessor using a different instruction set.
- 2020-11-03, 17:09:55
- Forum: forwardcom forum
- Topic: input/output instructions
- Replies: 8
- Views: 23305
input/output instructions
I prefer to have separate instructions for input and output, and a separate address space for in/out instead of memory mapped in/out. The reasons are: All memory addresses are relative and position-independent, while input/output addresses are usually absolute addresses. Code and data memory has a 6...
- 2020-09-22, 4:29:15
- Forum: forwardcom forum
- Topic: Store pair instruction
- Replies: 2
- Views: 6368
Re: Store pair instruction
The push and pop instructions can write or read a sequence of registers with increment or decrement of the stack pointer or an arbitrary pointer register. It will typically take one clock cycle for each register plus an extra clock cycle in the end for updating the pointer. Support for these instruc...
- 2020-08-09, 4:54:59
- Forum: forwardcom forum
- Topic: Implications of ForwardCom memory management approach
- Replies: 15
- Views: 27151
Re: Implications of ForwardCom memory management approach
Sebastian, I am not sure I understand your idea. Why do you think memory protection is critical for the speed, but address translation is not?
- 2020-06-25, 6:13:38
- Forum: forwardcom forum
- Topic: Implications of ForwardCom memory management approach
- Replies: 15
- Views: 27151
Re: Implications of ForwardCom memory management approach
You may have to emulate fixed size page tables to run Linux etc. Or you may want to invent something new. ForwardCom can make memory blocks that are executable but not readable to make a true Harvard architecture, and memory blocks that are readable but not executable for security reasons. It can al...
- 2020-06-15, 13:09:58
- Forum: forwardcom forum
- Topic: Implications of ForwardCom memory management approach
- Replies: 15
- Views: 27151
Re: Implications of ForwardCom memory management approach
A TLB lookup may take 1-2 clock cycles. A TLB miss costs many clock cycles. The chip area used for the TLB could be used for making a larger data cache or code cache instead. You can't have unlimited chip area without slowing down everything.
- 2020-06-10, 5:00:40
- Forum: forwardcom forum
- Topic: Proposal to drop tiny instructions
- Replies: 11
- Views: 30016
Re: Proposal to drop tiny instructions
The x86 instruction set has many complex instructions with multiple output registers and multiple µops. Such complex instructions are implemented as microcode in both Intel and AMD processors. They are quite slow because the normal pipeline flow is interrupted while code is being fetched from a micr...
- 2020-06-05, 5:11:35
- Forum: forwardcom forum
- Topic: Proposal to drop tiny instructions
- Replies: 11
- Views: 30016
Re: Proposal to drop tiny instructions
Regarding multi-register instructions: We should not have too many such instructions, because they are complicated to implement in the decoder. I have thought about instructions for zeroing many registers or clearing many vector registers. If you need a multi-register move, you could probably use a ...
- 2020-05-21, 18:16:44
- Forum: forwardcom forum
- Topic: Proposal to drop tiny instructions
- Replies: 11
- Views: 30016
Re: Proposal to drop tiny instructions
The decision has been made now. I have removed the tiny instructions and updated all documentation and tools according to this change. New push and pop instructions are added. This change allowed me to get rid of a lot of complexity.
This is version 1.10.
This is version 1.10.
- 2020-05-20, 13:35:56
- Forum: forwardcom forum
- Topic: Handshaking between CPU pipeline stages
- Replies: 6
- Views: 10076
Re: Handshaking between CPU pipeline stages
There are many things that could possibly stall the pipeline: Read and write to the same address, or the CPU is unable to check whether memory addresses are overlapping. No vacant write buffer Cache misses No vacant register read port No vacant result bus An instruction is waiting for an operand fro...
- 2020-05-20, 5:04:43
- Forum: forwardcom forum
- Topic: Handshaking between CPU pipeline stages
- Replies: 6
- Views: 10076
Re: Handshaking between CPU pipeline stages
Thank you for your responses. The problem I am trying to tackle is if some stage in the pipeline is stalled for whatever reason, it has to stop all preceding stages in the pipeline immediately. Kulaskos idea of a buffer between each stage would work, but it would require a lot of extra flip flops an...
- 2020-05-16, 12:54:49
- Forum: forwardcom forum
- Topic: Handshaking between CPU pipeline stages
- Replies: 6
- Views: 10076
Handshaking between CPU pipeline stages
I am thinking about how to coordinate the processing between the different stages in the pipeline. I want to know if I am doing the right thing or if there is a better way of doing this. Here is my idea: Each stage in the pipeline is a module with the following inputs and outputs: stall_in: Tells th...
- 2020-05-16, 5:18:17
- Forum: forwardcom forum
- Topic: Proposal to drop tiny instructions
- Replies: 11
- Views: 30016
Re: Proposal to drop tiny instructions
I think it was you who advised me four years ago to avoid multi-output instructions. Now that I have started to work with a soft core I can see that you were right. It is good to reduce the number of register write ports and result buses. But splitting an instruction into multiple µops appears to be...
- 2020-05-16, 4:50:11
- Forum: forwardcom forum
- Topic: Methodology for choosing instructions to include or omit
- Replies: 2
- Views: 6533
Re: Methodology for choosing instructions to include or omit
Thanks for the link. The x86-64 ISA has thousands of instructions. In fact, my x86 disassembler has a table of 2029 instructions. It is miraculous that Intel and AMD have actually managed to put all this on a single silicon chip and still get a good performance, but it is obviously not an optimal de...
- 2020-05-14, 12:58:47
- Forum: forwardcom forum
- Topic: Proposal to drop tiny instructions
- Replies: 11
- Views: 30016
Proposal to drop tiny instructions
At present, ForwardCom has four different instruction sizes. Most instructions use a single 32-bit code word. Instructions that need extra bits for constants, extra registers, extra option bits, etc. can use two or three 32-bit words. There is also a tiny instruction format. Two tiny instructions ca...
- 2020-05-13, 12:32:27
- Forum: forwardcom forum
- Topic: Separate call stack and data stack
- Replies: 6
- Views: 12552
Separate call stack and data stack
I have written in the specifications that it is recommended to have two separate stacks - a call stack for return addresses, and a data stack for local data. This was for security reasons to prevent buffer overflow attacks. Now I have found another advantage of separate stacks. While making the inst...