Як запрограмовані перші мікропроцесори?


44

Це щойно на мене зрозуміло, що якщо ти пишеш операційну систему, то про що це пишеш? Я запитую це, коли я читаю книгу про основи мікропроцесорів з 1980 року, і це запитання вискакувало мені в голову:

Як запрограмований перший мікропроцесорний чіп?

Відповідь може бути очевидною, але мене це клопоче.


6
Якщо мені можуть дозволити підключати власну роботу, дивіться мою відповідь на тему "Як ядро ​​Linux може скласти себе?" на стеку переповнення . Відповідь не очевидна, поки ви не зрозумієте загальний принцип, коли ви скажете "Ну, звичайно ..."
dmckee

@dmckee Але це все ще не відповідає на питання, як він знав, що робити :) хто сказав комп'ютеру за допомогою перемикачів, що робити? Я хочу трохи детальніше.
Дін

4
Отже, питання полягає у розробці послідовності завантаження першого чіпа? Ну, це, безумовно, питання, яке належить на цьому веб-сайті, але воно виходить, як розробляти цифрову логіку, побудовану з компонентів .... запускайте його для запуску у відомому стані, а потім подайте на нього входи, які будуть корисні. Я залишу це інший , щоб забезпечити точну відповідь, тому що я хиткий на це, але ви ж знаєте , що перші комп'ютери були реалізовані в вакуумних трубках, НЕ так? Потім було покоління в окремих транзисторах, все до першої мікросхеми. Інженери вже знали, що вони роблять.
dmckee

1
На немікро-процесорах, звичайно.
користувач253751

Відповіді:


56

Я візьму ваше запитання буквально і обговорюю в основному мікропроцесори, а не комп'ютери взагалі.

На всіх комп’ютерах є якийсь машинний код. Інструкція складається з опкоду та одного або декількох операндів. Наприклад, інструкція ADD для Intel 4004 (найперший мікропроцесор) була закодована як 1000RRRR, де 1000 - опкод для ADD, а RRRR - реєстровий номер.

Перші комп’ютерні програми були написані вручну, кодуючи вручну 0 і 0, щоб створити програму машинною мовою. Потім це програмується в чіп. Перші мікропроцесори використовували ПЗУ (пам'ять лише для читання); пізніше це було замінено EPROM (Erasable Programmable ROM, який був стертий УФ-світлом); зараз програми зазвичай запрограмовані на EEPROM ( "Електрично ... - EPROM" , який можна стерти на мікросхемі), або конкретно на флеш-пам'ять.

Більшість мікропроцесорів тепер можуть запускати програми з оперативної пам’яті (це, як правило, стандарт для всього, крім мікроконтролерів), але в першу чергу повинен бути спосіб завантаження програми в оперативну пам’ять. Як вказував у своїй відповіді Джобі Таффі, це було зроблено за допомогою тумблерів для Altair 8080, який працював на базі Intel 8080 (який слідував за 4004 та 8008). У вашому ПК є трохи ПЗУ під назвою BIOS, який використовується для запуску комп'ютера та завантаження ОС в оперативну пам'ять.

Мова машини стає швидко стомлюючим, тому були розроблені програми асемблера, які беруть мнемонічну мову асемблера і переводять її, як правило, один рядок коду складання за інструкцією, в машинний код. Тож замість 10000001 можна було б написати ADD R1.

Але найперший асемблер мав бути записаний у машинному коді. Тоді його можна було б переписати у власний код асемблера, а машинна версія, що використовується для його складання вперше. Після цього програма могла зібратись. Це називається завантажувальним завантаженням, і це робиться і з компіляторами - вони, як правило, спочатку записуються в асемблері (або іншій мові високого рівня), а потім переписуються рідною мовою та збираються з оригінальним компілятором, поки компілятор не зможе скомпілювати себе.

Оскільки перший мікропроцесор був розроблений задовго після того, як з'явилися мейнфрейми та мінікомп'ютери, а 4004 взагалі не підходив для роботи асемблера, Intel, ймовірно, написала крос-асемблер, який працював на одному з його великих комп'ютерів, і переклав код складання для 4004 у бінарне зображення, яке можна запрограмувати в ROM. Знову ж таки, це звичайна методика, яка використовується для порту компіляторів на нову платформу (так звану перехресну компіляцію ).


Чудова відповідь tcrosley! Виправлено допит про EEPROM проти EPROM. +1
tyblu

1
І якщо ви дійсно хотіли запрограмувати мікроконтролер без іншого комп’ютера (окрім свого мозку), ви могли б зробити це, побудувавши схему, яка безпосередньо подала програму в нього. Якщо було запрограмовано на jtag, ви можете переключити комутатори, щоб імітувати команди jtag, необхідні для програмування пристрою. Якщо він використовував зовнішній таран, то ви могли б використовувати безліч демультиплексорів і величезні масиви резисторів, прив'язаних високими або низькими, щоб представити біти інструкцій (і, ймовірно, використовувати низьку тактову частоту, оскільки обладнання буде повільним).
nategoose

3
@tyblu: Я досить впевнений, що запобіжники-PROM мають попередні EPROM. Найпростішою формою ПЗУ є по суті вибірково заселений діодний масив (на початку діоди буквально припаяли б до сітки, щоб представити одну полярність біта; відсутній діод представляв іншу полярність). Запобіжник-PROM ставить на мікросхему діодний масив, але має рядкові транзистори, які набагато бідніші, ніж діоди на перехрестях. Можна було вибірково видалити діоди, встановивши адресні дроти, а потім вдаривши по-справжньому провідні дані, підключені до діодів, які хотіли видалити.
supercat

@tyblu: Зауважте, що запобіжники-PROM електрично не схожі на сучасні OTPROM, які є просто мікросхемами EPROM у пакетах без вікна. Пристрої EPROM / OTP програмуються електричним зарядом затворів певних транзисторів (у яких є достатня ємність і недостатньо протікання, щоб утримувати заряд по суті на невизначений час). На відміну від цього, мікросхеми Fuse-PROM програмуються фізично руйнуючи з'єднання з небажаними діодами.
supercat

1
перегляньте цей "ПЗУ" із днів дискретних транзисторів: en.wikipedia.org/wiki/Core_rope_memory
JustJeff

23

Спочатку програми писалися на папері, а потім перекладалися на будь-який метод введення, яким був доступний комп'ютер. Це йшло від ручок, вимикачів та перемичок на перших комп’ютерах, для перфокарт, клавіатур / дощок.

На ілюстрації нижче показано, що використовують справжні програмісти:


10
Чорт,
емаки

6
Я програмую програмістів. (І тих програмістів, які я програмую програмістів, які програмують програмістів.)
Mateen Ulhaq

4
Я роблю своїх програмістів.
W5VO

16

Ну, я був навколо, коли вперше з'явилися мікросередовища, ми написали перехресні асемблери та компілятори на мейнфрейми та міні, потім ми завантажили їх на 8-бітне обладнання, люди насправді не турбували будівельні компілятори / асемблери на мікросередовищі, поки у них не було достатньої локальної пам’яті. зробити його корисним


14

Однією з ранніх форм пам’яті лише для читання була сітка, де адреса буде вибирати рядок (витягуючи її низько), а стовпці представляли дані. Кожен стовпець мав би підтягування, і кожен перетин мав би припаяний діод, який би представляв "нуль", або жоден діод, який би представляв "один" [бітові рівні могли бути перевернуті за бажанням у випадках, коли це зменшило б кількість необхідних діодів]. Будь-який бажаний зразок бітів можна "запрограмувати" пайкою у власних діодах.

Ця конструкція була внесена у світ інтегральної мікросхеми у вигляді запобіжника-PROM. По суті, плавкий запобіжник PROM - це схема, подібно до наведеної вище, побудована на мікросхемі, за винятком того, що всі діоди були заповнені, і кожен діод мав слабкий запобіжник послідовно з ним. Після доставки PROM буде читати "0" у всіх місцях. Однак можна вибірково видалити діоди, вибравши відповідну адресу та запустивши відповідні лінії даних "важко" високо [зауважте: я думаю, кожен біт, можливо, мав власний транзистор, а не діод, але принцип той самий].

Програмовані запобіжниками PROM були змінені напівпровідниковою пам'яттю, яка зберігає біти шляхом імплантації зарядів на внутрішні конденсатори. Такі пам'яті не тільки є більш компактними, ніж запобіжники PROM, але якщо вони розміщені в УФ-прозорих упаковках, вони можуть бути стерті та використані повторно. Зауважте, що навіть так звані "одноразові програмовані" спогади майже завжди використовують цей самий дизайн, але вони просто розміщені в непрозорих УФ-упаковках.

двоє чоловіків, що вказують на велику діодну матрицю діод-матричний магазин управління комп’ютера MIT Whirlwind 1950

транзистор-матриця з крихітними SMD-транзисторами транзисторно-матричний запам'ятовуючий пристрій 2005 ЦП MT15


сподіваюсь, ви не заперечуєте над тим дрібницею, яке я зробив до вашої пошти
davidcary

7

Я не впевнений, що хтось вирішив справжнє питання ОП, яке, здається, "Як комп'ютер знає, як розпочати роботу?" , тож я тріскаю на це.

Почніть з аналогії. "Як транзистор знає, як почати роботу?" Звичайно, це не так, він просто працює відповідно до фізики, і інженер будує схему так, щоб вона починалася у відомому стані.

Комп'ютери знають, як почати роботу, оскільки це схеми (звичайно, дуже складні), і вони побудовані для запуску в певному стані. У сучасній машині такий стан може бути таким, коли головна шина перезаряджає частину адресного простору для користування ПЗУ на материнській платі як низький об'єм пам'яті (ПЗУ було записано за допомогою BIOS). У машині першого покоління початковий стан, можливо, було припинено, лічильник програм на нулі, а підсистема перемикання пам'яті активна.


6

Операційна система - це комп'ютерна програма, яка працює безпосередньо на процесорі. Він може бути написаний будь-якою мовою, яка може бути складена або зібрана до машинних інструкцій. Збірка та С - це загальний вибір.

Код завантажується в процесори по одній інструкції за раз з магазину - ROM або RAM.

Z3 , перший програмований процесор був побудований з електромеханічного реле і читати інструкції з перфорованого фільму.

Перший персональний комп'ютер Altair 8800 був запрограмований перемикачами.

Щоб дізнатися, як побудований процесор із цифрової логіки, див. Https://electronics.stackexchange.com/questions/5516/a-fun-book-to-learn-computer-architecture-for-not-exarely-beginners

Докладні відомості див. У розділі http://en.wikipedia.org/wiki/History_of_computing_hardware


5

Ось трохи про справді старі комп’ютери:

Наскільки я знаю, ще в ті часи у вас була велика передня панель комп'ютера, яка використовувалася для їх програмування. По суті, кожна комірка пам'яті на цих комп’ютерах була підключена до комутаторів. Ви будете живити пам'ять, а потім використовувати перемикачі для встановлення даних у кожній комірці. Таким чином, ви поступово вводити програму в пам'ять комп'ютера. Тоді ви встановите початкову точку програми та розпочніть її виконання.

З розвитком технологій розроблялися так звані програми завантажувача. Це короткі програми, вся суть яких полягає у запуску іншої програми з пам'яті комп'ютера. Проблема із введенням програм побіжно (а пізніше декілька бітів із використанням восьмигранних та пізніших шістнадцяткових чисел) полягала в тому, що це було дуже повільно і велика ймовірність, що оператор помилиться під час завантаження програми. Таким чином, короткі програми будуть використовуватися для завантаження великих програм, що зберігаються в пам'яті комп'ютера. З плином часу частка коду, яку довелося вводити вручну, зменшувалася, і в сучасних комп’ютерах ми часто маємо завантажувачі, записані на якомусь ПЗУ чи навіть флеш-пам’яті.


4
У машинах з "передньою панеллю", як і в попередніх системах S-100, комутатори дозволяють вам керувати системною шиною. Один перемикач дозволить призупинити процесор. Під час призупинення роботи процесора ви могли вручну поставити адресу на шину адреси (через комутатори), ввести дані на шину даних (більше комутаторів), а потім вручну викликати цикл запису на шині (інший комутатор) або цикл зчитування, щоб повернути дані до 8 окремих світлодіодів і прочитати двійкові тощо. Зробивши це, ви можете зберегти достатню кількість машинного коду в оперативній пам'яті, відключити процесор і піти звідти.
JustJeff

4

Я кілька років тому зіткнувся з програмістом мікроконтролера, який мав чотиризначний семисегментний дисплей та шістнадцяткову клавіатуру. Я впевнений, що на борту цього мікроконтролера не було, і це дозволило вам вводити машинний код безпосередньо в один байт.

Отже, це дозволить вам (болісно) складати список кодів Op вручну один за одним і вводити їх у чіп.

Я не маю уявлення, чи можете ви їх ще отримати, але я здогадуюсь, що щось подібне було використане ще тоді, коли мікроконтролери були відносно новими.


1
Звучить, можливо, KIM-1 або Cosmac ELF, обидва з яких включали мікропроцесор (MOS 6502 та RCA [CD] 1802). KIM: oldcomputers.net/kim1.html ELF: cosmacelf.com
mctylr

Напевно, це було щось на кшталт того, що сказав mctylr. У машинах такого типу зазвичай була невелика програма «монітор» в ПЗУ. Коли ви вводили байти за допомогою клавіатури, насправді 6502 (або 8085 чи будь-що інше) читали клавіші, змінювали пам’ять, оновлювали світлодіоди тощо
JustJeff

1

Перші мікропроцесори були б запрограмовані за допомогою існуючих комп'ютерів, які не базувалися на мікропроцесорах. До того, як перший процесор був виготовлений на одній мікросхемі, вже існували передові комп'ютерні архітектури, побудовані з дискретних компонентів, а не мікропроцесорів. Погляньте, о, скажімо, на IBM 360.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.