Кіріспе
APE(X)C, немесе All Purpose Electronic (X) Компьютерлер сериясы 1950 жылдардың басында Лондонның Биркбек колледжінде Эндрю Дональд Бут жасаған. Оның APE(X)C сериясындағы жұмысын Британдық Райондық зерттеулер қауымдастығы қаржылаған. Атаулардың нақты мағынасы толыққанды түсініксіз болғанымен, алғашқы модель BRRA-ға тиесілі болған көрінеді. Буттың сөзіне сүйенсек, Х әрпі X компаниясын білдіреді. Серияның бірі APE(X)C немесе All Purpose Electronic X Ray Компьютері деп те аталды және Биркбек колледжінде орналасқан.
Өмірбаян
1943 жылдан бастап Бут рентген сәулелерінің дифракциялық деректерін пайдалана отырып, кристалл құрылымдарын анықтау жұмысын бастады. Осы есептеулер өте көбік еңбек талап ететін, сондықтан процесті автоматтандыруға мұқтаждық туды және ол дифракциялық суретінің өзара аралықтарын есептеу үшін аналогтық компьютер құрастырды. 1947 жылы ол әріптесі және болашақ жұбайы Кэтлин Бриттенмен бірге сол кезде компьютерлік зерттеулерде жетекші болған фон Нейманның тобымен бірнеше ай өткізді.
Техникалық сипаттама
МЕСС APEXC сериясы үшін эмулятор жасады. Олар оның жұмыс істеуін былай сипаттайды: APEXC – өте қарапайым машина. Нұсқаулар мен деректер әрқашан 32 биттік. Процессор 2-ге толықтырылатын бүтін сандық арифметиканы қолданады. Адрестердің ұзындығы 10 битті құрайды. APEXC-те 32 биттік аккумулятор мен 32 биттік дерек тіркегісінен басқа оперативтік жады жоқ (олар 32 биттік аккумулятормен бірге 64 биттік ығысу нұсқауларын орындау және 64 биттік көбейтудің нәтижесін сақтау үшін қолданылады). Нұсқаулар мен деректер екі магниттік барабанда сақталады, жалпы 32 дөңгелек магниттік жолға 32 сөзден тұрады. Айналу жылдамдығы 3750 айн/мин (62,5 айналым/секунд) болғандықтан, бағдарламаның орындалу жылдамдығы теориялық максимум 1 кИПС-тен, егер бағдарламаның нұсқаулары мен деректері тікелей орналаспаса, 100 ИПС-тен төмен болуы мүмкін. Бүгінде көптеген адамдар кішкентай калькулятордың жылдамырақ дейді. Бір ерекшелігі – бағдарламаның санауыш жоқ: әрбір машиналық нұсқау келесі нұсқаудың адресін қамтиды. Бұл конструкция қызық болғанымен, осы цилиндрлік жадпен ең жақсы нәтижеге жетудің жалғыз жолы. Машиналық код тек 15 нұсқаудан тұрады, атап айтқанда: қосу, алу, көбейту, жүктеу (3 нұсқасы), сақтау (2 нұсқасы), шартты тармақтау, оң арифметикалық бит ығысу, оң бит айналу, перфокартадан кіріс, перфокартаға шығыс, машинаны тоқтату және банк ауысу (APEXC-те ешқашан қолданылмайды, себебі онда тек 1024 сөз сақталады және адрестердің ұзындығы 10 бит). «Векторлық режим» деп аталатын режим 32 рет 32 рет қатарлы жад орындарымен бірдей операцияны қайталауға мүмкіндік береді. Биттік және/немесе/xor және бөлу операцияларының жоқтығына назар аударыңыз. Сондай-ақ, тікелей адрестеу режимдері жоқ: опкодтарды динамикалық түрлендіру оны симуляциялаудың жалғыз жолы. Тағы бір ерекшелік – жад шинасы мен ААУ-дың ені 1 бит. 64 кГц бит сағаты және 2 кГц сөз сағаты бар, әрбір сөздік жад пен арифметикалық операция 32 1 биттік жад пен арифметикалық операцияға бөлінеді: бұл 32 биттік циклды құрайды, барлығы 1 сөздік цикл. Процессор өте тиімді: көптеген нұсқаулар тек 2 сөздік циклді алады (1-і нұсқауды алу үшін, 1-і операндты оқу және орындау үшін), сақтау, ығысу және көбейту операцияларын қоспағанда. APEXC процессоры RISC ретінде қарастырылады; басқа сәйкес келетін сөз жоқ. Оқуға арналған жад (ROM) жоқ, сондықтан жүктеуші немесе әдепкілік бастапқы бағдарлама жоқ. APEXC үшін ешқандай атқарушы немесе операциялық жүйе жазылмаған деп есептеледі, бірақ ортақ арифметикалық, кіріс-шығыс және жөндеу тапсырмалары үшін ішкі бағдарламалардың кітапханалары болған. Машинаны басқару әдетте басқару панелі арқылы жүзеге асырылады, ол пайдаланушыға орталық процессорды іске қосуға, тоқтатуға және қайта іске қосуға, сондай-ақ процессор тоқтатылған кезде тіркегіштер мен жадты өзгертуге мүмкіндік береді. Машинаны іске қосқан кезде, орындалатын бағдарламаның алғашқы нұсқауының адресі басқару панеліне енгізілуі керек, содан кейін іске қосу түймесін басу керек. Көптеген бағдарламалар тоқтату нұсқаулығымен аяқталады, бұл операторға машинаның күйін тексеруге, мүмкін, кейбір постмортемдік жөндеу процедураларын орындауға (ядролық төгілу режімі APEXC бағдарламалау кітабында сипатталған), содан кейін басқа бағдарламаның адресін енгізіп, оны іске қосуға мүмкіндік береді. Екі кіріс-шығыс құрылғысы қолдау көрсетілді: қағаз таспасын оқу құрылғысы және қағаз таспасын перфорациялау құрылғысы. Перфорациялау құрылғысының шығысын қажет болған жағдайда принтерге («телетайп») беруге болады. Принтердің шығысы эмуляцияланады және экранда көрсетіледі. Таспаға енгізу APEXC арқылы компьютерлік түрде жасалды немесе арнайы 32 пернелі пернетақтамен қолмен терілді (әрбір таспаның қатарында 5 дерек тесігі (< > бит) болды, бұл 32 түрлі мәнді құрайды).
The APEXC is an incredibly simple machine. Instruction and data words are always 32 bits long. The processor uses integer arithmetic with 2's complement representation. Addresses are 10 bits long. The APEXC has no RAM, except for a 32 bit accumulator and a 32 bit data register (used along with the 32 bit accumulator to implement 64 bit shift instructions and hold the 64 bit result of a multiplication). Instructions and data are stored in two magnetic drums, for a total of 32 circular magnetic tracks of 32 words. Since the rotation rate is 3750rpm (62.5 rotations per second), the program execution speed can go from as high as the theoretical maximum of 1 kIPS to lower than 100IPS if program instructions and data are not contiguous. Nowadays, many say a pocket calculator is faster. One oddity is that there is no program counter: each machine instruction includes the address of the next instruction. This design may sound weird, but it is the only way to achieve optimal performance with this cylinder based memory. The machine code is made of 15 instructions only, namely addition, subtraction, multiplication, load (3 variants), store (2 variants), conditional branch, right arithmetic bit shift, right bit rotation, punched card input, punched card output, machine stop, and bank switching (which is never used on the APEXC, since it only has 1024 words of storage, and addresses are 10 bit long). A so called vector mode enables to repeat the same operation 32 times with 32 successive memory locations. Note the lack of bitwise and/or/xor and division. Also, note the lack of indirect addressing modes: dynamic modification of opcodes is the only way one may simulate it. Another oddity is that the memory bus and the ALU are 1 bit wide. There is a 64 kHz bit clock and a 2 kHz word clock, and each word memory and arithmetic operation is decomposed into 32 1 bit memory and arithmetic operations: this takes 32 bit cycles, for a total of 1 word cycle. The processor is fairly efficient: most instructions take only 2 word cycles (1 for fetch, 1 for read operand and execute), with the exception of stores, shifts and multiplications. The APEXC CPU qualifies as RISC; there is no other adequate word. Note there is no read only memory (ROM), and therefore no bootstrap loader or default start up program whatsoever. It is believed that no executive or operating system was ever written for the APEXC, although there were subroutine libraries of sorts for common arithmetic, I/O and debug tasks. Operation of the machine is normally done through a control panel which allows the user to start, stop and resume the central processing unit, and to alter registers and memory when the CPU is stopped. When starting the machine, the address of the first instruction of the program to be executed must be entered in the control panel, then the run switch must be pressed. Most programs end with a stop instruction, which enables the operator to check the state of the machine, possibly run some post mortem debugging procedures (a core dump routine is described in an APEXC programming book), then enter the address of another program and run it. Two I/O devices were supported: a paper tape reader, and a paper tape puncher. The puncher output could be fed to a printer ('teletyper') unit when desirable. Printer output is emulated and is displayed on screen. Tape input was either computer generated by the APEXC, or hand typed with a special 32 key keyboard (each tape row had 5 data holes (< > bits), which makes 32 different values).