Search found 193 matches
- 2024-09-21, 4:24:01
- Forum: forwardcom forum
- Topic: Self-synchronizing ISA
- Replies: 5
- Views: 2623
Re: Self-synchronizing ISA
The ForwardCom format already supports instructions with immediate data of up to 64 bits. Other instruction sets require that you put immediate floating point data in data memory or load them piecewise.
- 2024-09-15, 5:33:06
- Forum: forwardcom forum
- Topic: Fushed push with bounds check
- Replies: 5
- Views: 11617
Re: Fushed push with bounds check
A vector register in ForwardCom always contains a length and a sequence of data with that length. HubertLamontagne wrote: this is std::vector::push_back(), right? Not really. The stack is not equivalent to std::vector, but you can make multiple stacks and use one of them as a std::vector. This requi...
- 2024-09-06, 17:43:48
- Forum: forwardcom forum
- Topic: Self-synchronizing ISA
- Replies: 5
- Views: 2623
Re: Self-synchronizing ISA
Currently, 1-word instructions can begin with 00 or 01. With your proposal, they can only begin with 10. This means that we would have only half as many 1-word combinations available. Furthermore, we would have fewer available bits in the first word because we have to move the leading bits of the se...
- 2024-09-04, 6:00:53
- Forum: forwardcom forum
- Topic: Self-synchronizing ISA
- Replies: 5
- Views: 2623
Re: Self-synchronizing ISA
Thanks for your comment. ForwardCom is not using such a system for the following reasons: It would be using more of the precious code bits. That means instructions would be longer, and there would be fewer single-word instructions The instructions can already store large immediate values of 32 or 64...
- 2024-08-11, 9:45:11
- Forum: forwardcom forum
- Topic: Rounding Mode
- Replies: 3
- Views: 24331
Re: Rounding Mode
ForwardCom has now been updated to version 1.13. The rounding mode "odd if not exact" is now available for all arithmetic instructions. It is expected that this rounding mode will be specified in a future version of the IEEE 754 floating point standard. The rounding mode "ties away fr...
- 2024-08-11, 9:34:27
- Forum: forwardcom forum
- Topic: Tracking floating point errors with NaNs
- Replies: 1
- Views: 6083
Re: Tracking floating point errors with NaNs
This proposal has now been implemented in ForwardCom version 1.13. Everything is updated to fit the new standard. The status codes have been given the following order of priority: Data missing Division by zero Overflow Invalid operation Underflow Inexact Math functions with invalid arguments User-de...
- 2024-06-14, 10:08:30
- Forum: forwardcom forum
- Topic: Tracking floating point errors with NaNs
- Replies: 1
- Views: 6083
Tracking floating point errors with NaNs
Most current computer systems use traps (software interrupts) or a global status flag to indicate floating point errors, such as overflow and division by zero. These methods are inefficient for vector processing, out-of-order processing, and speculative execution, as I have explained in this documen...
- 2024-05-22, 6:04:58
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
Thanks Kulasko. Runtime linking in ForwardCom does not load the whole library. It loads only the functions needed in the same way as static linking. This avoids the wasteful RAM use of traditional dynamic linking. The executable program is reserving memory space at load time for the expected need of...
- 2024-05-08, 5:15:22
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
What can I say? You are repeating your argumenst. Do you want me to repeat my arguments too? We can never end the discussion this way. You believe that the amount of DLL code that is actually shared between multiple running applications in real-life situations is high. I believe it is low. Nobody kn...
- 2024-05-06, 5:35:10
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
James wrote: It's frustratingly difficult to find any serious research comparing the two Yes indeed. you're still not acknowledging that static linking huge graphical libraries is unacceptable Graphics libraries are huge because they contain many functions. Each program probably uses only only a sma...
- 2024-05-05, 6:28:33
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
James wrote: I see the need to take the static vs dynamic linking debate from the top. Thank you. the compiler should maintain a database of functions and choose whether or not to inline them Agree. No problem. Disk space we can perhaps disrespect, however space in the instruction cache is precious....
- 2024-05-04, 15:14:32
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
I don't intend to be hostile. I just disagree. This project is intended to inspire discussions. The ForwardCom libraries already contains function modules with multiple entries. For example, the sin, cos, and tan functions are all in the same module and using the same code. I still believe that stat...
- 2024-05-04, 4:57:25
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
Dynamic linking also leads to bloat. DLL's and .so's are often very big, while only a very small fraction of them are actually used by a typical program. Dynamic libraries in traditional systems are scattered around in memory. This leads to excessive load time for a program that uses many libraries,...
- 2024-05-03, 14:22:30
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
A module is what comes from an object file. A library can contain multiple modules, each containing a function. Relinking is done statically, not dynamically. The executable file is relinked when one or more library functions need updates. The updated executable file is stored and used again and aga...
- 2024-05-03, 5:08:59
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
James wrote `f = .. ; g = f ; h = f;` No problem. Each function is supposed to have its own module. The linker will load only the necessary modules. Do you mean g and h are aliases for f, or they are calling f? If they are aliases, they can be in the same module without any costs. If they are callin...
- 2024-02-17, 6:28:54
- Forum: forwardcom forum
- Topic: Fushed push with bounds check
- Replies: 5
- Views: 11617
Re: Fushed push with bounds check
The addressing mode with bounds check works only if the array size is fixed and known at compile time. The push instruction will signal an error if writing to inaccessible memory. The push instruction is already quite complex at the hardware level. Adding still more complexity might be critical. It ...
- 2024-01-31, 6:51:29
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
You posted the same text twice, that's why I removed it.I don't know what happened with the "[redundant text removed]"
- 2024-01-30, 15:58:58
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
Multi-entrypoint functions are possible in assembly code, but cannot be coded in high level language. They can be called from HLL code, though. I think you are asking for trouble if you want partially compatible libraries with multiple versions of the same function. ForwardCom tries to solve the pro...
- 2024-01-30, 14:11:52
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
In my experience, dynamic linking is slow, not because of symbol lookup, but because the libraries are many and large. It is not uncommon for an application to load ten DLLs of 1 MB each, and use only 1 kB of each. It will load at least one memory page from each DLL, and usually more. This is a wast...
- 2024-01-29, 5:51:11
- Forum: forwardcom forum
- Topic: Proposal for symbol lookup in the linker
- Replies: 23
- Views: 66246
Re: Proposal for symbol lookup in the linker
Name hashing was actually used in the old OMF object file format used in DOS. This format was not very successful (mostly for other reasons). Some systems today use unsorted name tables, while ELF files often have both a sorted and an unsorted name table. ForwardCom is using sorted name tables and b...
- 2023-11-29, 5:57:43
- Forum: forwardcom forum
- Topic: Dot Product
- Replies: 5
- Views: 36238
Re: Dot Product
A cross product has 3 dimensions. It requires more permutations. Permutations and data movement across vector lanes are expensive in hardware. Therefore, I have no plans to implement an instruction with more dimensions than 2. Augmented multiplication is possible with FMA instructions: Y = a * b dY ...
- 2023-11-26, 8:21:43
- Forum: forwardcom forum
- Topic: SQRT or RSQRT - that is the question
- Replies: 1
- Views: 20972
Re: SQRT or RSQRT - that is the question
Existing instruction sets have several different instructions for fast reciprocal and fast rsqrt with different precisions. It will be a mess if different hardware implementations have different precision for the same instruction. Therefore, I think these have to be optional implementation-specific ...
- 2023-11-26, 8:09:03
- Forum: forwardcom forum
- Topic: Underflow/Overflow in mul_2pow
- Replies: 2
- Views: 22405
Re: Underflow/Overflow in mul_2pow
The main purpose of the mul_2pow instruction is to improve speed. x * 0.25 will take several clock cycles. With optimization on, the compiler or assembler can change x*0.25 to mul_2pow(x, -2) which takes only 1 clock cycle. It would be difficult to do this in a single clock cycle if you want underfl...
- 2023-11-26, 7:47:39
- Forum: forwardcom forum
- Topic: Rounding Mode
- Replies: 3
- Views: 24331
Re: Rounding Mode
I have added the rounding mode "odd if not exact" in the compress instruction because this is needed in a two step reduction: double precision -> single precision -> half precision. Other rounding modes can be added if they are needed. Do you have any good use cases for the rounding modes ...
- 2023-11-26, 7:33:52
- Forum: forwardcom forum
- Topic: Dot Product
- Replies: 5
- Views: 36238
Re: Dot Product
Damian, you need to use this instruction twice for a complex number multiplication or division. First, you calculate the real part of the product and place it in y0, where (y0,y1) is the result vector. Then you calculate the imaginary part and place it in y1, while retaining y0 by using (c0,c1) = (y...