Ерте компьютерлердегі бағдарламаны оңтайландыру тәсілі
Optimum programming
Оптималды бағдарламалау: Ескі компьютерлерде нұсқауларды жылдам оқу үшін жадқа орналастыру әдісі. Кешігу желісі және магниттік барабандар туралы ақпарат.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Компьютерлік технология тарихында оптималды бағдарламалау немесе оптималды кодтау – компьютерлік бағдарламаның нұсқауларын жадта орналастыру тәжірибесі, машинаның нұсқауларды күту уақытын ең төменгі деңгейге түсіру мақсатында жасалады. Бұл, негізінен, көптеген ерте цифрлық компьютерлердің құрылымына байланысты тарихи қызығушылық тудырады. Көптеген алғашқы компьютерлер сериялық жадтың бір түрін қолданды, көбінесе кешіктіру желілік жады немесе магниттік барабандар. Қазіргі заманғы компьютерлердің тікелей қол жетімді жадынан (random access memory) айырмашылығы, сериялық жадтағы сөздер бірінен кейін бірі қол жетімді болады; нақты бір сөзді қол жеткізуге қажетті уақыт оның және қазіргі уақытта оқылып жатқан сөз арасындағы «қашықтыққа» байланысты. Егер берілген кешіктіру желісінде n сөз болса, бір сөзді оқудың орташа уақыты n/2 сөз уақытын құрайды. Оптималды кодтау болмаса, мұндай машина өз уақытының көп бөлігін нұсқаулар мен деректерді күтіп отыруға жұмсайды. Бұл мәселені шешу үшін көптеген машиналар, әсіресе Алан Тьюрингтің ACE және оның вариациялары, келесі орындалатын нұсқаудың мекенжайын нұсқау форматында көрсететін өрісті қамтыды. Оптималды кодтауды қолданатын бағдарламашы ағымдағы нұсқауды орындауға қажетті уақытты анықтап, жад жүйесі сол уақытта қаншалықты жылғатынын есептейді, содан кейін бағдарламаның келесі нұсқауын сол жерге орналастырады. Осылайша, ағымдағы нұсқау аяқталғаннан кейін және компьютер нұсқауда көрсетілгендей келесі нұсқауды іздегенде, бұл жад орны дәл сол кезде келіп, дереу оқуға дайын болады. Мысалы, егер бағдарламашы 400 мекенжайында ADD нұсқауын кодтаса және ADD нұсқауының орындалуына 4 сөз уақыты қажет болса, бағдарламашы нұсқаудың «келесі мекенжай» өрісін 404 деп белгілейді және келесі нұсқауды сол жерге орналастырады. АҚШ-та оптималды кодтау ең көп IBM 650 және Bendix G 15 машиналарында қолданылды. Екі машинаның да осы тапсырманы автоматтандыруға мүмкіндік беретін оптимизациялық құрастырғыштары болды (IBM үшін SOAP, Bendix үшін POGO).
In the history of computing, optimum programming, or optimum coding is the practice of arranging a computer program's instructions in memory so as to minimize the time the machine spends waiting for instructions. It is of historical interest mainly due to the design of many early digital computers. Most early computers used some form of serial memory, primarily delay line memory or magnetic drums. Unlike the random access memory of modern computers, words in serial memory are made available one at a time; the time required to access a particular word depends on the "distance" between it and the word currently being read. If a given delay line held n words, the average time to read a word would be n/2 word times. Without optimum coding, such a machine would spend most of its time idly waiting for instructions and data. To circumvent this problem, many machines, particularly Alan Turing's ACE and its descendants, included a field specifying the address of the next instruction to be executed in their instruction format. A programmer employing optimum coding would look up the time needed to perform the current instruction, calculate how far the memory system would move in that time, and then place the next instruction for the program at that location. Thus when the current instruction completed and the computer looked for the next one as specified in the instruction, that memory location would just be arriving and would be able to be read in immediately. For example, if a programmer had just coded an ADD instruction at address 400, and the ADD instruction required 4 word times to execute, the programmer would set the "next address" field of the instruction to 404, and would place the next instruction there. In the United States, optimum coding was most commonly employed on the IBM 650 and the Bendix G 15. Both machines had optimizing assemblers (SOAP for the IBM, POGO for Bendix) that could automate this task.