Search found 193 matches

by agner
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.
by agner
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...
by agner
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...
by agner
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...
by agner
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...
by agner
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...
by agner
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...
by agner
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...
by agner
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...
by agner
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...
by agner
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....
by agner
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...
by agner
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,...
by agner
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...
by agner
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...
by agner
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 ...
by agner
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

I don't know what happened with the "[redundant text removed]"
You posted the same text twice, that's why I removed it.
by agner
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...
by agner
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...
by agner
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...
by agner
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 ...
by agner
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 ...
by agner
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...
by agner
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 ...
by agner
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...