My idea is to give the ALU a several gigabyte live flash drive containing multiple tables. These tables will be referenced during "Gaming Mode", when mathematical precision is not as important as responsive interaction with the game. The idea is also to include a Gaming Switch, a boolean, which controls wether the ALU computes it's functions on demand (false), or grabs them from the pre-computer table (true). It is expected that the tables are much, much less precise than computing the value, but also a fraction faster.
The tables in this flash drive would not be indexed, but rather, each result given 2 bytes. To find a value in the table representing the answer when a and b are given as inputs, you would jump to position a*100000+b, which would be directly outputted with no further checking.
Example Case, Square Root
Square Roots are used extensively in distance checking between objects for purposes of collision detection, pathfinding, culling, and many other cases. This implies that a tiny, tiny speed improvement would have drastic effects on the performance of any program using square roots. Suppose we were presented with the number 340.67, representing the distance between a player and an item. We need to decide whether to send that item to the video card for rendering to the screen, a process known as culling. Currently, the square root must be calculated beforehand to several decimal places. However, in a video game, such precision is not needed. What would happen in "Gaming Mode" is the number 340.67 is rounded to 340.6, multiplied by 10 to 3406, multiplied by the amount of bytes of the values in that table (in this case, 2 bytes per value), added to the offset of the first byte of the relevant table in the flash drive, then the index at that position is returned to the calling process. The value at that address is 58.36, which is what the process receives from the ALU.
My intention is that, when precision is not required, the ALU can do it's SQRT, SINE, LOGARITHM, and even EXPONENTS calculations simply by relaying the value stored in pre-computer tables. This results in considerably faster all-round performance, not only in Video aspects, but in Sound, Logic, File System, and basic GUI aspects of computing.
ALU: Arithmetic Logic Unit
Table: 1D, 2D, or 3D array of values where any 1, 2, or 3 coordinates return a single result
Credit and Citations
Currently, this is the work of Daniel Toye alone. Citations will be added if any edits are made as a result of someone's critiques or observations.
Edited by time4dan, 03 March 2012 - 08:43 AM.