КУРСОВА РОБОТА
з дисципліни „Архітектура комп’ютера”
на тему:
Багаторівнева організація комп’ютерів
ЗМІСТ
Вступ.............................................................................................................................3
1. Багаторівнева комп'ютерна організація................................................................4
1.1 Мови, рівні і віртуальні машини………….........................................................4
1.2 Сучасні багаторівневі машини.............................................................................7
2. Розвиток комп'ютерної архітектури.....................................................................11
2.1 Нульове покоління — механічні комп'ютери (1642-1945)..............................11
2.2 Перше покоління — електронні лампи (1945-1955)........................................14
2.3 Друге покоління — транзистори (1955-1965).................................................. 18
2.4 Третє покоління — інтегральні схеми (1965-1980)..........................................21
2.5 Четверте покоління — надвеликі інтегральні схеми (1980-?).........................23
3. Типи комп'ютерів…………………………...........................................................26
3.1 Технологічні і економічні аспекти.....................................................................26
3.2 Широкий спектр комп'ютерів………………………………….........................28
4. Сімейства комп'ютерів..........................................................................................32
4.1 Pentium II..............................................................................................................32
4.2 ULTRASPARC II.................................................................................................36
4.3 PicoJava II.............................................................................................................39
Література..................................................................................................................42
Вступ
Цифровий комп'ютер — це машина, яка може вирішувати задачі, виконуючи дані їй команди. Послідовність команд, що описують рішення певної задачі, називається програмою. Електронні схеми кожного комп'ютера можуть розпізнавати і виконувати обмежений набір простих команд. Всі програми перед виконанням повинні бути перетворені на послідовність таких команд, які зазвичай не складніше чим:
• скласти 2 числа;
• перевірити, чи не є число нулем;
• скопіювати шматок даних з однієї частини пам'яті комп'ютера в іншу.
Ці примітивні команди в сукупності складають мову, на якій люди можуть спілкуватися з комп'ютером. Така мова називається машинною мовою. Розробник при створенні нового комп'ютера повинен вирішувати, які команди включити в машинну мову цього комп'ютера. Це залежить від призначення комп'ютера, від того, які завдання він повинен виконувати. Зазвичай прагнуть зробити машинні команди якомога простіше, щоб уникнути складнощів при конструюванні комп'ютера і понизити витрати на необхідну електроніку. Оскільки більшість машинних мов дуже примітивні, використовувати їх важко і утомливо. Це просте спостереження з часом привело до побудови ряду рівнів абстракцій, кожна з яких надбудовується над абстракцією нижчого рівня. Саме таким чином можна подолати складнощі при спілкуванні з комп'ютером. Ми називаємо цей підхід багаторівневою комп'ютерною організацією.
Так ми і назвали цю книгу. У наступному розділі ми розповімо, що розуміємо під цим терміном. Потім ми розповімо про історію розвитку цієї проблеми і положення справ зараз, а також розглянемо деякі важливі приклади.
Багаторівнева комп'ютерна організація
Як ми вже сказали, існує величезна різниця тим часом, що зручно для людей, і тим, що зручно для комп'ютерів. Люди хочуть зробити X, але комп'ютери можуть зробити тільки Y. Через це виникають проблеми. Мета даної книги — пояснити, як можна вирішувати ці проблеми.
Мови, рівні і віртуальні машини
Проблему можна вирішити двома способами. Обидва ці способу включають розробку нових команд, які зручніші для людини, чим вбудовані машинні команди. Ці нові команди в сукупності формують мову, яку ми називатимемо Я 1. Вбудовані машинні команди теж формують мову, і ми називатимемо його Я 0. Комп'ютер може виконувати тільки програми, написані на його машинній мові Я 0. Згадані два способи вирішення проблеми розрізняються тим, яким чином комп'ютер виконуватиме програми, написані на мові Я 1.
Перший спосіб виконання програми, написаної на мові Я 1, — заміна
кожної команди на еквівалентний набір команд в мові Я 0. В цьому випадку комп'ютер виконує нову програму, написану на мові Я 0, замість старої програми, написаної на Я 1. Ця технологія називається трансляцією.
Другий спосіб — написання програми на мові Я 0, яка бере програми, написані на мові Я 1, як вхідні дані, розглядає кожну команду по черзі і відразу виконує еквівалентний набір команд мови Я 0. Ця технологія не вимагає складання нової програми на Я 0. Вона називається інтерпретацією, а програма, яка здійснює інтерпретацію, називається інтерпретатором.
Трансляція і інтерпретація схожі. При застосуванні обох методів комп'ютер зрештою виконує набір команд на мові Я 0, еквівалентних командам Я 1. Відмінність лише в тому, що при трансляції вся програма Я 1 переробляється в програму Я 0, програма Я 1 відкидається, а нова програма на Я 0 завантажується в пам'ять комп'ютера і потім виконується.
При інтерпретації кожна команда програми на Я 1 перекодує в Я 0 і відразу ж виконується. На відміну від трансляції, тут не створюється нова програма на Я 0, а відбувається послідовна перекодувала і виконання команд. Обидва ці методу, а також їх комбінація широко використовуються.
Зазвичай набагато простіше уявити собі існування гіпотетичного комп'ютера або віртуальної машини, для якої машинною мовою є мова Я 1, чим думати про трансляцію і інтерпретацію. Назвемо таку віртуальну машину М 1. Якби таку машину М 1 можна було б сконструювати без великих грошових витрат, мова Я 0, та і машина, яка виконує програми на мові Я 0, були б не потрібні. Можна було б просто писати програми на мові Я 1, а комп'ютер відразу б їх виконував. Навіть якщо віртуальна машина дуже дорога або її дуже важко сконструювати, люди все ж таки можуть писати програми псові. Ці програми можуть транслюватися або інтерпретуватися програмою, написаною на мові Я 0, яка сама могла б виконуватися фактично існуючим комп'ютером.
Іншими словами, можна писати програми для віртуальних машин, неначе
вони дійсно існують. Щоб трансляція і інтерпретація були доцільними, мови Я 0 і Я 1 не повинні сильно розрізнятися. Це означає, що мова Я 1 хоч і краще, ніж Я 0, але все таки далекий від ідеАЛП. Можливо, це декілька бентежить в світлі первинної мети створення мови Я 1 — звільнити програміста від тягаря написання програм на мові, яка зручніша для комп'ютера, чим для людини.
Проте ситуація не так безнадійна. Очевидне рішення цієї проблеми — створення ще одного набору команд, які більшою мірою орієнтовані на людину і у меншій мірі на комп'ютер, чим Я 1. Цей третій набір команд також формує мову, яку ми називатимемо Я 2, а відповідну віртуальну машину — М 2, Людина може писати програми на мові Я 2, неначе віртуальна машина з машинною мовою Я 2 дійсно існує. Такі програми можуть або транслюватися на мову Я 1, або виконуватися інтерпретатором, написаним на мові Я 1. Винахід цілого ряду мов, кожен з яких зручніший для людини, чим попередній, може продовжуватися до тих пір, поки ми не дійдемо до відповідної нам мови. Кожен така мова використовує свого попередника як основу, тому ми можемо розглядати комп'ютер у вигляді ряду рівнів, як показано на мал. 1. Мова, що знаходиться в самому низу ієрархічної структури, — найпримітивніший, а що знаходиться на самому верху — найскладніший.
Мал. 1. Багаторівнева машина
Між мовою і віртуальною машиною існує важлива залежність. У кожної машини є якась певна машинна мова, що складається зі всіх команд, які ця машина може виконувати. По суті, машина визначає мову. Схожим чином мова визначає машину, яка може виконувати всі програми, написані на цій мові. Машину, що задається певною мовою, дуже складно і дорого сконструювати з електронних схем, але ми можемо уявити собі таку машину. Комп'ютер з машинною мовою C++ або COBOL був би дуже складним, але його можна було б сконструювати, якщо враховувати високий рівень сучасних технологій. Проте існують вагомі причини не створювати такий комп'ютер: це злитком складно в порівнянні з іншими технічними прийомами.
Комп'ютер з п рівнями можна розглядати як п разных віртуальних
машин, у кожної з яких є своя машинна мова. Терміни «рівень» і «віртуальна машина» ми використовуватимемо як синоніми. Тільки програми, написані на Я 0, можуть виконуватися комп'ютером без застосування трансляції і інтерпретації. Програми, написані на Я 1, Я 2.... Я п, повинні проходити через інтерпретатор нижчого рівня або транслюватися на мову, відповідну нижчому рівню.
Людині, яка пише програми для віртуальної машини рівня п, не обов'язково знати про транслятори і інтерпретатори нижчих рівнів. Машина виконає ці програми, і не важливо, чи будуть вони виконуватися крок за кроком інтерпретатором або їх виконуватиме сама машина. У обох випадках результат один і той же: програма буде виконана.
Сучасні багаторівневі машини
Більшість сучасних комп'ютерів складаються з двох і більш за рівні. Існують машини навіть з шістьма рівнями (мал. 2). Рівень 0 — апаратне забезпечення машини. Його електронні схеми виконують програми, написані на мові рівня 1. Ради повноти потрібно згадати про існування ще одного рівня, розташованого нижче рівня 0. Цей рівень не показаний на мал. 1.2, оскільки він потрапляє в сферу електронної техніки і, отже, не розглядається в цій книзі. Він називається рівнем фізичних пристроїв. На цьому рівні знаходяться транзистори, які є примітивами для розробників комп'ютерів. Пояснювати, як працюють транзистори, — завдання фізики.
На самому нижньому рівні, цифровому логічному рівні, об'єкти називаються вентилями. Хоча вентилі складаються з аналогових компонентів, таких як транзистори, вони можуть бути точно змодельовані як цифрові засоби. У кожного вентиля є одне або декілька цифрових вхідних даних (сигналів, що представляють 0 або 1). Вентиль обчислює прості функції цих сигналів, такі як і або АБО. Кожен вентиль формується з декількох транзисторів. Декілька вентилів формують 1 біт пам'яті, який може містити 0 або 1. Біти пам'яті, об'єднані в групи, наприклад, по 16,32 або 64, формують регістри. Кожен регістр може містити одне двійкове число до певної межі. З вентилів також може полягати сам комп'ютер.
Мал. 2. Комп'ютер з шістьма рівнями. Спосіб підтримки кожного рівня
вказаний під ним.
Наступний рівень — мікроархітектурний рівень. На цьому рівні можна бачити сукупності 8 або 32 регістрів, які формують локальну пам'ять і схему, звану АЛП (арифметико-логічний пристрій). АЛП виконує прості арифметичні операції. Регістри разом з АЛП формують тракт даних, по якому поступають дані. Основна операція тракту даних полягає в наступному. Вибирається один або два регістри, АЛП проводить над ними яку-небудь операцію, наприклад складання, а результат поміщається в один з цих регістрів.
На деяких машинах робота тракту даних контролюється особливою програмою, яка називається мікропрограмою. На інших машинах тракт даних контролюється апаратними засобами. У попередніх виданнях книги ми назвали цей рівень «рівнем мікропрограмування», тому що раніше він майже завжди був інтерпретатором програмного забезпечення. Оскільки зараз тракт даних зазвичай контролюється апаратним забезпеченням, ми змінили назву, щоб точніше відобразити сенс.
На машинах, де тракт даних контролюється програмним забезпеченням мікропрограма — це інтерпретатор для команд на рівні 2. Мікропрограма викликає команди з пам'яті і виконує їх одну за іншою, використовуючи при цьому тракт даних. Наприклад, для того, щоб виконати команду ADD, ця команда викликається з пам'яті, її операнди поміщаються в регістри, АЛП обчислює суму, а потім результат переправляється назад. На комп'ютері з апаратним контролем тракту даних відбувається така ж процедура, але при цьому немає програми, яка контролює інтерпретацію команд рівня 2.
Другий рівень ми називатимемо рівнем архітектури системи команд. Кожен виробник публікує керівництво для комп'ютерів, які він продає, під назвою «Керівництво по машинній мові» або «Принципи роботи комп'ютера Western Wombat Model 100Х» - і т.п. Таке керівництво містить інформацію саме про цей рівень. Коли вони описують набір машинних команд, вони насправді описують команди, які виконуються мікропрограмою-інтерпретатором або апаратним забезпеченням. Якщо виробник поставляє два інтерпретатори для однієї машини, він повинен видати два керівництво по машинній мові, окремо для кожного інтерпретатора.
Наступний рівень зазвичай гібридний. Більшість команд в його мові є також і на рівні архітектури системи команд (команди, що є на одному з рівнів, цілком можуть знаходитися на інших рівнях). У цього рівня є деякі додаткові особливості: набір нових команд, інша організація пам'яті, здатність виконувати дві і більш за програми одночасно і деякі інші. При побудові третього рівня можливі більше варіантів, чим при побудові першого і другого.
Нові засоби, що з'явилися на третьому рівні, виконуються інтерпретатором, який працює на другому рівні. Цей інтерпретатор був колись названий операційною системою. Команди третього рівня, ідентичні командам другого рівня, виконуються мікропрограмою або апаратним забезпеченням, але не операційною системою. Іншими словами, одна частина команд третього рівня інтерпретується операційною системою, а інша частина — мікропрограмою. От чому цей рівень вважається гібридним. Ми називатимемо цей рівень рівнем операційної системи.
Між третім і четвертим рівнями є істотна різниця. Нижні три рівня конструюються не для того, щоб з ними працював звичайний програміст. Вони спочатку призначені для роботи інтерпретаторів і трансляторів, що підтримують вищі рівні. Ці транслятори і інтерпретатори складаються так званими системними програмістами, які спеціалізуються на розробці і побудові нових віртуальних машин. Рівні з четвертого і вищеописані для прикладних програмістів, вирішальних конкретні завдання. Ще одна зміна, що з'явилася на рівні 4, — спосіб, яким підтримуються вищі рівні. Рівні 2 і 3 зазвичай інтерпретуються, а рівні 4, 5 і вище зазвичай, хоч і не завжди, підтримуються транслятором. Інша відмінність між рівнями 1,2,3 і рівнями 4,5 і вище — особливість мови. Машинні мови рівнів 1,2 і З — цифрові. Програми, написані на цих мовах, складаються з довгих лав цифр, які зручні для комп'ютерів, але абсолютно незручні для людей. Починаючи з четвертого рівня, мови містять слова і скорочення, зрозумілі людині.
Четвертий рівень є символічною формою однієї з мов нижчого рівня. На цьому рівні можна писати програми в прийнятній для людини формі. Ці програми спочатку транслюються на мову рівня 1, 2 або 3, а потім інтерпретуються відповідною віртуальною або такою, що фактично існує машиною. Програма, яка виконує трансляцію, називається асемблером.
П'ятий рівень зазвичай складається з мов, розроблених для прикладних програмістів. Такі мови називаються мовами високого рівня. Існують сотні мов високого рівня. Найбільш відомі серед них — BASIC, З, C++, Java, LISP і Prolog. Програми, написані на цих мовах, зазвичай транслюються на рівень 3 або 4. Транслятори, які обробляють ці програми, називаються компіляторами. Відзначимо, що іноді також використовується метод інтерпретації. Наприклад, програми на мові Java зазвичай інтерпретуються. В деяких випадках п'ятий рівень складається з інтерпретатора для такої сфери додатку, як символічна математика. Він забезпечує дані і операції для вирішення завдань в цій сфері в термінах, зрозумілих людям, досвідченим в символічній математиці.
Вивід: комп'ютер проектується як ієрархічна структура рівнів, кожен з яких надбудовується над попереднім. Кожен рівень є певною абстракцією з різними об'єктами і операціями. Розглядаючи комп'ютер так само, ми можемо не приймати до уваги непотрібні нам деталі і звести складний предмет простішому для розуміння.
Набір типів даних, операцій і особливостей кожного рівня називається архітектурою. Архітектура пов'язана з аспектами, які видно програмістові. Наприклад, відомості про те, скільки пам'яті можна використовувати при написанні програми, — частина архітектури. А аспекти розробки (наприклад, яка технологія використовується при створенні пам'яті) не є частиною архітектури. Вивчення того, як розробляються ті частини комп'ютерної системи, які видно програмістам, називається вивченням комп'ютерної архітектури. Терміни «комп'ютерна архітектура» і «комп'ютерна організація» означають по суті одне і те ж.
Розвиток комп'ютерної архітектури
В період розвитку комп'ютерних технологій були розроблені сотні різних комп'ютерів. Багато хто з них давно забутий, але деякі сильно вплинули на сучасні ідеї. У цьому розділі ми дамо короткий огляд деяких ключових історичних моментів, щоб краще зрозуміти, яким чином розробники дійшли до створення сучасних комп'ютерів.
Комп'ютери, які ми розглядатимемо, представлені в табл. 1.
Нульове покоління — механічні комп'ютери (1642-1945)
Першою людиною, що створила рахункову машину, був французький учений Блез Паскаль (1623-1662), на честь якого названа одна з мов програмування. Паскаль сконструював цю машину в 1642 році, коли йому було всього 19 років, для свого отця, складальника податків. Вона була механічна: з шестерінками і ручним приводом. Рахункова машина Паскаля могла виконувати тільки операції складання і віднімання.
Тридцять років через великого німецького математика Готфрід Вільгельм Лейбніц (1646-1716) побудував іншу механічну машину, яка окрім складання і віднімання могла виконувати операції множення і ділення. По суті, Лейбніц три століття назад створив подібність кишенькового калькулятора з чотирма функціями. Ще через 150 років професор математики Кембріджського університету Чарльз Беббідж (1792-1871), винахідник спідометра, розробив і сконструював різницеву машину. Ця механічна машина, яка, як і машина Паскаля, могла тільки складати і віднімати, підраховувала таблиці чисел для морської навігації. У машину був закладений тільки один алгоритм — метод кінцевих різниць з використанням поліномів. У цієї машини був досить цікавий спосіб виведення інформації: результати видавлювалися сталевим штампом на мідній дощечці, що передбачило пізніші засоби введення-виводу — перфокарти і компакт-диски. Хоча цей пристрій працював досить непогано, Беббіджу незабаром наскучила машина, що виконувала тільки один алгоритм. Він витратив дуже багато часу, велику частину свого сімейного стану і ще 17000 фунтів, виділених урядом, па розробку аналітичної машини. У аналітичної машини були 4 компоненти: пристрій (пам'ять), що запам'ятовує, обчислювальний пристрій, пристрій введення (для прочитування перфокарт), пристрій виводу (перфоратор і друкуючий пристрій). Пам'ять складалася з 1000 слів але 50 десяткових розрядів, кожне з яких містило змінні і результати. Обчислювальний пристрій приймав операнди з пам'яті, потім виконувало операції складання, віднімання, множення або ділення і повертало отриманий результат назад в пам'ять. Як і різницева машина, цей пристрій був механічним.
Перевага аналітичної машини полягала в тому, що вона могла виконувати різні завдання. Вона прочитувала команди з перфокарт і виконувала їх.
Деякі команди наказували машині узяти 2 числа з пам'яті, перенести їх у обчислювальний пристрій, провести над ними операцію (наприклад, скласти) і відправити результат назад в пристрій, що запам'ятовує. Інші команди перевіряли число, а іноді здійснювали операцію переходу залежно від того, позитивне воно або негативне. Якщо в прочитуючий пристрій вводилися перфокарти з іншою програмою, то машина виконувала інший набір операцій. А різницева машина могла здійснювати тільки один алгоритм. Оскільки ця аналітична машина програмувалася на асемблері, їй було необхідне програмне забезпечення. Щоб створити це програмне забезпечення, Беббідж найняв молоду жінку — Аду Августу Ловлейс, дочку знаменитого британського поета Байрона. Ада Ловлейс була першим в світі програмістом. У це честь названа сучасна мова програмування Ada. До нещастя, Беббідж ніколи не відладжував комп'ютер. Йому потрібні були тисячі і тисячі шестерінок, зроблених з такою точністю, яка була неможлива в XIX столітті. Але ідеї Беббіджа випередили його епоху, і навіть сьогодні більшість сучасних комп'ютерів по будові схожі з аналітичною машиною. Тому справедливо буде сказати, що Беббідж був дідусем сучасного цифрового комп'ютера.
Таблиця 1. Основні етапи розвитку комп'ютерів
В кінці 30-х років XX століття німець Конрад Зус сконструював декілька автоматичних рахункових машин з використанням електромагнітних реле. Йому не вдалося отримати грошові кошти від уряду на свої розробки тому що почалася війна. Зус нічого не знав про роботу Беббіджа, і його машини були знищені під час бомбардування Берліна в 1944 році, тому його робота ніяк не вплинула на майбутній розвиток комп'ютерної техніки. Проте він був одним з піонерів в цій області. Трохи пізніше рахункові машини були сконструйовані в Америці. Машина Атанасова була надзвичайно розвиненою для того часу. У ній використовувалася бінарна арифметика і інформаційні ємкості, які періодично оновлювалися, щоб уникнути знищення даних. Сучасна динамічна пам'ять (ОЗУ) працює точно за таким же принципом. До нещастя, ця машина так і не стала такою, що діє. У якомусь сенсі Атанасов був схожий на Беббіджа: мрійник, якого не влаштовували технології свого часу.
Комп'ютер Стібітса дійсно працював, хоч і був примітивніший, чим машина Атанасова. Стібітс продемонстрував роботу своєї машини на конференції в Дартмутськом коледжі в 1940 році. На цій конференції був присутній Джон Моушлі, нічим не знаменитий професор фізики з університету Пенсільванії. Пізніше він став дуже відомим в області комп'ютерних розробок. Поки Зус, Стібітс і Атанасов розробляли автоматичні рахункові машини, молодий Говард Айкен насилу проектував ручні рахункові машини як частина свого філософського дослідження в Гарварді. Після закінчення дослідження Айкен усвідомив важливість автоматичних обчислень. Він пішов в бібліотеку, дізнався про роботу Беббіджа і вирішив створити з реле такий же комп'ютер, який Беббіджу не вдалося створити із зубчатих коліс.
Робота над першим комп'ютером Айкена «Mark I» була закінчена в 1944 році. Комп'ютер містив 72 слова по 23 десяткових розряду кожне і міг виконати будь-яку команду за 6 секунд. На пристроях введення-виводу використовувалася перфострічка. На той час, як Айкен закінчив роботу над комп'ютером «Mark II», релейні комп'ютери вже застаріли. Почалася ера електроніки.
Перше покоління — електронні лампи (1945-1955)
Стимулом до створення електронного комп'ютера стала Друга світова війна. На початку війни німецькі підводні човни руйнували британські кораблі. Німецькі адмірали посилали на підводні човни по радіо команди, а англійці могли перехоплювати ці команди. Проблема полягала в тому, що ці радіопослання були закодовані за допомогою приладу під назвою ENIGMA, попередник якого був спроектований винахідником-дилетантом і колишнім президентом США Томасом Джефферсоном. На початку війни англійцям вдалося придбати ENIGMA у поляків, які у свою чергу, вкрали його у німців. Проте щоб розшифрувати закодоване послання, була потрібна величезна кількість обчислень, і їх потрібно було провести відразу після того, як радіопослання було перехоплене. Тому британський уряд заснував секретну лабораторію для створення електронного комп'ютера під назвою COLOSSUS. У створенні цієї машини брав участь знаменитий британський математик Алан Тюрінг. COLOSSUS працював вже в 1943 році, але оскільки британський уряд повністю контролював цей проект і розглядав його як військову таємницю впродовж 30 років, COLOSSUS не міг служити основою подальшого розвитку комп'ютерів. Ми згадали його тільки тому, що це був перший в світі електронний цифровий комп'ютер.
Друга світова війна вплинула і на розвиток комп'ютерної техніки в США. Армії потрібні були таблиці стрілянина, яка використовувалася при націлюванні важкої артилерії. Сотні жінок наймалися для обчислення цих таблиць на ручних рахункових машинах (вважалося, що жінки акуратніші при розрахунках, чим чоловіки). Проте цей процес вимагав багато часу, і часто траплялися помилки.
Джон Моушлі, який був знайомий з роботами Атанасова і Стібітса, розумів, що армія зацікавлена в створенні механічних рахункових машин. Він зажадав від армії фінансування робіт із створення електронного комп'ютера. Вимога була задоволена в 1943 році, і Моушлі з своїм студентом, Дж. Преспером Екертом, почали конструювати електронний комп'ютер, який вони назвали ENIAC (Electronic Numerical Integrator and Computer — електронний цифровий інтегратор і калькулятор). Він складався з 18 000 електровакуумних ламп і 1500 реле. ENIAC важив 30 тонн і споживав 140 кіловат електроенергії. У машини було 20 регістрів, кожен з яких міг містити 10-розрядне десяткове число. (Десятковий регістр — це пам'ять дуже маленького об'єму, яка може вміщати число до якої-небудь певної максимальної кількості розрядів, щось подібне до одометра, який запам'ятовує кілометраж пройденого автомобілем шляху.) У ENIАС було встановлено 6000 багатоканальних перемикачів і безліч кабелів було протягнуто до розеток.
Робота над машиною була закінчена в 1946 році, коли вона вже була не потрібна. Але оскільки війна закінчилася, Моушлі і Екерту дозволили організувати школу, де вони розповідали про свою роботу колегам-ученим. З цієї школи почався розвиток інтересу до створення великих цифрових комп'ютерів. Після появи школи і інші дослідники узялися за конструювання електронних обчислювальних машин. Першим робочим комп'ютером був EDSAC (1949 рік). Цю машину сконструював Моріс Уїлкс в Кембріджському університеті. Далі JOHNIAC — в корпорації Rand, ILLIAC — в Університеті Ілінойса, MANIAC — в лабораторії Лос-аламоса і WEIZAC — в Інституті Вайцмана в Ізраїлі.
Екерт і Моушлі незабаром почали роботу над машиною EDVAC (Electronic Discrete Variable Computer — електронна дискретна параметрична машина). До нещастя, цей проект закрився, коли вони пішли з університету, щоб заснувати комп'ютерну корпорацію у Філадельфії (Силіконової долини тоді ще не було). Після ряду злиття ця компанія перетворилася на Unisys Corporation. Екерт і Моушлі хотіли отримати патент на винахід цифрової обчислювальної машини. Після декількох років судової тяжби було винесено ухвАЛП, що патент недійсний, оскільки цифрову обчислювальну машину винайшов Атанасов, хоча він і не запатентував свій винахід. Тоді як Екерт і Моушлі працювали над машиною EDVAC, один з учасників проекту ENIAC, Джон фон Нейман, поїхав в Інститут спеціальних досліджень в Прінстоне, щоб сконструювати свою власну версію EDVAC, машину IAS1. Фон Нейман був генієм в тих же областях, що і Леонардо да Вінчі. Він знав багато мов, був фахівцем у фізиці і математиці і володів феноменальною пам'яттю; він пам'ятав все, що коли-небудь чув, бачив або читав.
Він міг дослівно процитувати по пам'яті тексти книг, які читав кілька років тому. Коли фон Нейман став цікавитися обчислювальними машинами, він вже був найзнаменитішим математиком в світі. Фон Нейман незабаром усвідомив, що створення комп'ютерів з великою кількістю перемикачів і кабелів вимагає тривалого часу і дуже утомливо. Він прийшов до думки, що програма повинна бути представлена в пам'яті комп'ютера в цифровій формі, разом з даними. Він також відзначив, що десяткова арифметика, використовувана в машині ENIAC, де кожен розряд представлявся 10 електронними лампами (1 включена і 9 вимкнені), повинна бути замінена бінарною арифметикою.
Основний проект, який він описав спочатку, відомий зараз як фон-неймановская обчислювальна машина. Він був використаний в EDSAC, першій машині з програмою в пам'яті, і навіть зараз, більш ніж півстоліття опісля, є основою більшості сучасних цифрових комп'ютерів. Цей задум і машина IAS зробили дуже великий вплив на подальший розвиток комп'ютерної техніки, тому варто стисло описати його. Схема архітектури цієї машини дана на мал. 1.4.
Мал. 3. Схема фон-неймановської обчислювальної машини
Машина фон Неймана складалася з п'яти основних частин: пам'яті, арифметико-логічного пристрою, пристрою управління, а також пристроїв введення-виводу. Пам'ять включала 4096 слів, кожне слово містило 40 бітів, битий — це 0 або 1. Кожне слово містило або 2 команди по 20 бітів, або ціле число сознаком на 40 бітів. 8 бітів указували на тваней команди, а решта 12 бітів визначали одне з 4096 слів. Усередині арифметико-логічного пристрою знаходився особливий внутрішній регістр в 40 бітів, так званий акумулятор. Типова команда додавала слово з пам'яті до акумулятора або зберігала вміст акумулятора в пам'яті. Ця машина не виконувала арифметичні операції з плаваючою крапкою, оскільки фон Нейман розумів, що будь-який досвідчений математик був здатний тримати плаваючу кому в голові.
Приблизно в той же час, коли фон Нейман працював над машиною IAS, дослідники МТИ розробляли свій комп'ютер Whirlwind I. На відміну від IAS, ENIAC і інших машин того ж типу із словами великої довжини, машина Whirlwind I містила слова по 16 бітів і була призначена для роботи в реальному часі. Цей проект привів до винаходу пам'яті на магнітному сердечнику (винахідник Джей Форрестер), а потім і першого серійного міні-комп'ютера. У той час IBM була маленькою компанією, що проводила перфокарти і механічні машини для їх сортування. Хоча фірма IBM частково фінансувала проект Айкена, вона не цікавилася комп'ютерами і лише в 1953 році побудувала комп'ютер IBM-701, через багато років після того, як компанія Екерта і Моушлі з своїм комп'ютером UNIVAC стала номером один на комп'ютерному ринку. У IBM-701 було 2048 слів по 36 бітів, кожне слово містили дві команди. Він став першим комп'ютером, що лідирує на ринку протягом десяти років. Через три роки з'явився IBM-704, у якого були 4 Кбайт пам'яті на магнітних сердечниках, команди по 36 бітів і процесор з плаваючою крапкою. У 1958 році компанія IBM почала роботу над останнім комп'ютером на електронних лампах, IBM-709, який по суті був ускладненою версією IBM-704.
Друге покоління — транзистори (1955-1965)
Транзистор був винайдений співробітниками лабораторії Bell Laboratories Джоном Бардіном, Уолтером Браттейном і Уїльямом Шоклі, за що в 1956 році вони отримали Нобелівську премію в області фізики. Протягом десяти років транзистори провели революцію у виробництві комп'ютерів, і до кінця 50-х років комп'ютери на вакуумних лампах застаріли. Перший комп'ютер на транзисторах був побудований в лабораторії МТІ. Він містив слова з 16 бітів, як і Whirlwind I. Комп'ютер називався ТХ-0 (Transistorized experimental computer 0 — експериментальна транзисторна обчислювальна машина 0) і призначався тільки для тестування машини ТХ-2. Машина ТХ-2 не мала великого значення, але один з інженерів з цієї лабораторії, Кенет Ольсен, в 1957 році заснував компанію DEC (Digital Equipment Corporation — корпорація по виробництву цифрової апаратури), щоб проводити серійну машину, схожу з ТХ-0. Ця машина, PDP-1, з'явилася тільки через чотири роки головним чином тому, що капіталісти, фінансуючі DEC, вважали виробництво комп'ютерів невигідним. Тому компанія DEC продавала в основному невеликі електронні плати.
PDP-1 ноявнлея тільки в 1961 році. У нього були 4 Кбайт слів по 18 бітів і час циклу 5 мікросекунд. Цей параметр був в два рази менше, ніж у IBM-7090, транзисторного аналога IBM-709. PDP-1 був найшвидшим комп'ютером в світі у той час. PDP-1 коштував $120000, а IBM-7090 коштував мільйони. Компанія DEC продала десятки комп'ютерів PDP-1, і так з'явилася комп'ютерна промисловість. Одну з перших машин моделі PDP-1 віддали в МТІ, де вона відразу привернула увагу деяких молодих дослідників, що подають великі надії. Одним з нововведень PDP-1 був дисплей з розміром 512 на 512 пікселів, на якому можна було малювати крапки. Незабаром студенти МТІ склали спеціальну програму для PDP-1, щоб грати в «Війну світів» — першу в світі комп'ютерну гру. Через декілька років DEC розробив модель PDP-8, 12-бітовий комп'ютер. PDP-8 коштував набагато дешевше, ніж PDP-1 ($16000). Головне нововведення — одна шина (Omnibus) (мал. 4). Шина — це набір паралельно сполучених проводів для зв'язку компонентів комп'ютера. Це нововведення сильно відрізняло PDP-8 від I AS. Така структура з тих пір стала використовуватися у всіх комп'ютерах. Компанія DEC продала 50 000 комп'ютерів моделі PDP-8 і стала лідером на ринку міні-комп'ютерів.
Мал. 4. Шина комп’ютера PDP-8
Як вже було сказано, з винаходом транзисторів компанія IBM побудувала транзисторну версію IBM-709 - IBM-7090, а пізніше - IBM-7094. У неї час циклу складало 2 мікросекунди, а пам'ять складалася з 32 До слів по 16 бітів. IBM-7090 і IBM-7094 були останніми комп'ютерами типу ENIAC, але вони широко використовувалися для наукових розрахунків в 60-х роках минулого століття. Компанія IBM також випускала комп'ютери IBM-1401 для комерційних розрахунків. Ця машина могла прочитувати і записувати магнітні стрічки і перфокарти і роздруковувати результат так само швидко, як і IBM-7094, але при цьому коштувала дешевше. Для наукових обчислень вона не підходила, та зате була дуже зручна для ведення ділових записів.
У IBM-1401 не було регістрів і фіксованої довжини слова. Пам'ять містила 4 Кбайт по 8 бітів (4 Кбайт). Кожен байт містив символ в 6 бітів, адміністративний біт і біт для вказівки кінця слова. У команди MOVE, наприклад, є початкова адреса і адреса пункту призначення. Ця команда переміщає байти з першої адреси в другу, поки біт кінця слова не прийме значення 1.
У 1964 році компанія CDC (Control Data Corporation) випустила машину 6600 яка працювала майже на порядок швидше, ніж IBM-7094. Цей комп'ютер для складних розрахунків користувався великою популярністю, і компанія CDC пішла в гору. Секрет такої високої швидкості роботи полягав в тому, що усередині ЦП (центрального процесора) знаходилася машина з високим ступенем паралелізму. У неї було декілька функціональних пристроїв для складання, множення і ділення, і всі вони могли працювати одночасно. Для того, щоб машина швидко працювала, потрібно було скласти хорошу програму, але доклавши деякі зусилля, можна було зробити так, щоб машина виконувала 10 команд одночасно. Усередині машини 6600 було вбудовано декілька маленьких комп'ютерів. ЦП, таким чином, робило тільки підрахунок чисел, а решту функцій (управління роботою машини, а також введення і виведення інформації) виконували маленькі комп'ютери. Деякі принципи пристрою 6600 використовуються і в сучасних комп'ютерах.
Розробник комп'ютера 6600 Сеймур Крей був легендарною особою, як і фон Нейман. Він присвятив все своє життя створенню дуже могутніх комп'ютерів, які зараз називають суперкомп'ютерами. Серед них можна назвати CDC-6600, CDC-7600 і Сгау-1. Сеймур Крей також є автором відомого «алгоритму покупки автомобілів»: ви йдете в магазин, найближчий до вашого будинку, показуєте на машину, найближчу до дверей, і говорите: «Я беру цю». Цей алгоритм дозволяє витрачати мінімум часу на не дуже важливі справи (покупку автомобілів) і залишає велику частину часу на важливі (розробку суперкомп'ютерів).
Слід згадати ще один комп'ютер — Burroughs B5000. Розробники машин PDP-1, IBM-7094 і CDC-6600 займалися тільки апаратним забезпеченням, прагнучи понизити його вартість (DEC) або примусити працювати швидше (IBM і CDC). Програмне забезпечення не мінялося. Виробники В5000 пішли іншим шляхом. Вони розробили машину з наміром програмувати її иа мові Algol 60 (попереднику мови Pascal), сконструювавши апаратне забезпечення так, щоб спростити завдання компілятора. Так з'явилася ідея, що програмне забезпечення також потрібно враховувати при розробці комп'ютера. Але незабаром ця ідея була забута.
Третє покоління — інтегральні схеми