Optimum programming
Optimum programming (also called optimal coding, and minimum access coding) was the name for a programming technique sometimes used on computers whose main memory was not random access, but sequential (such as delay line- and drum-based memory).
In computers with such memory whose instructions all include the address of the next instruction (i.e. they do not have a Program Counter), it was possible to scatter the instructions through the memory such that when any given instruction finishes its execution, the memory is just ready to provide the next instruction (whose address could/would be given by the 'next instruction' field in the prior instruction). This ensured that the computer was never wasting time waiting for the memory to provide the next instruction it needed.
Initially, the task of placing the instructions in memory at appropriate locations to allow this was left up to the programmer(s); eventually software tools (such as assemblers) which did all the book-keeping necessary to automagically assign instructions to the appropriate addresses were written.
Among computers which used this technique were the ACE and its descendants (including the Pilot ACE and the DEUCE), the Bendix G-15, and the IBM 650.
External links
- SOAP II - address-optimizing assembler for the IBM 650