Как запрограммировали первые микропроцессоры?

Это только озадачило меня, что если вы пишете операционную систему, то на что вы ее написали? Я спрашиваю об этом, поскольку читаю книгу основных микропроцессоров с 1980 года, и этот вопрос появился у меня в голове:

Как был запрограммирован первый микропроцессорный чип?

Ответ может быть очевиден, но он меня раздражает.

43 голоса | спросил Dean 7 Jam1000000amFri, 07 Jan 2011 04:15:03 +030011 2011, 04:15:03

9 ответов


54

Я возьму ваш вопрос буквально и обсужу в основном микропроцессоры, а не компьютеры вообще.

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

Первые компьютерные программы были написаны вручную, ручное кодирование 1 и 0 для создания программы на машинных языках. Затем это запрограммировано в чипе. Первые микропроцессоры использовали ПЗУ (постоянное запоминающее устройство); это позже было заменено на EPROM (стираемое программируемое ПЗУ, которое было стерто с помощью УФ-излучения); теперь программы обычно программируются в EEPROM ( «Электрически ...-EPROM» , что может стираться на кристалле), или, в частности, флэш-памяти.

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

Язык машины быстро завывается, поэтому были разработаны ассемблерные программы, которые берут мнемонический язык ассемблера и переводят его, как правило, одну строку кода сборки на инструкцию, в машинный код. Поэтому вместо 10000001 следует написать ADD R1.

Но самый первый ассемблер должен был быть написан машинным кодом. Затем его можно было бы переписать в своем собственном коде ассемблера, а версия на машинке была использована для ее сборки в первый раз. После этого программа могла собраться сама. Это называется начальной загрузкой и выполняется также с компиляторами - они, как правило, сначала написаны на ассемблере (или другом язык высокого уровня), а затем переписываются на их родном языке и скомпилированы с исходным компилятором, пока компилятор не сможет скомпилировать себя.

Поскольку первый микропроцессор был разработан задолго до того, как мэйнфреймы и миникомпьютеры были вокруг, и 4004 не был действительно подходящим для запуска ассемблера, Intel, вероятно, написал кросс-ассемблер, который работал на одном из своих больших компьютеров, и перевел код сборки для 4004 в двоичное изображение, которое может быть запрограммировано в ПЗУ. Еще раз, это общий метод, используемый для переноса компиляторов на новую платформу (называемый кросс-компиляция ).

ответил tcrosley 7 Jam1000000amFri, 07 Jan 2011 04:46:26 +030011 2011, 04:46:26
23

Первоначально программы были написаны на бумаге, а затем перенесены на любой способ ввода, доступный компьютеру. Это происходило от ручек, переключателей и проводов перемычек на первых компьютерах, пуансонов, клавиатур /плат.

На приведенном ниже рисунке показано, что используют современные программисты real :

ответил W5VO 7 Jam1000000amFri, 07 Jan 2011 08:32:06 +030011 2011, 08:32:06
16

Хорошо, что я был рядом, когда впервые появились микрофоны, мы написали кросс-сборщики и компиляторы на мэйнфреймах и мини-станциях, затем мы загрузили их на 8-битное оборудование, люди действительно не пытались создавать компиляторы /ассемблеры на микронах, пока им не хватило локальное хранилище, чтобы сделать его полезным

ответил Paul 7 Jpm1000000pmFri, 07 Jan 2011 15:22:32 +030011 2011, 15:22:32
14

Одной из ранних форм памяти только для чтения была сетка, в которой адрес выбирал бы строку (потянув ее низко), а столбцы представляли данные. Каждый столбец будет иметь подтяжку, и каждое пересечение будет иметь диод, припаянный для представления «нуля», или никакой диод для представления «одного» [бит может быть инвертирован по желанию, в тех случаях, когда это уменьшит количество диодов требуется]. Любая желательная комбинация битов может быть «запрограммирована» путем пайки в соответствующих диодах.

Эта конструкция была внедрена в мир интегральных схем в виде плавкого предохранителя-ПРОМ. По существу, предохранитель PROM был схемой, как и выше, встроенной в чип, за исключением того, что все диоды были заселены, и каждый диод имел слабый предохранитель рядом с ним. Когда отправлено, PROM будет читать «0» во всех местах. Тем не менее, можно было выборочно удалять диоды, выбирая соответствующий адрес и управляя соответствующими линиями данных «жестко» [примечание: я думаю, что каждый бит может иметь свой собственный транзистор, а не диод, но принцип тот же].

Запрограммированные с помощью плавки PROM были заменены полупроводниковыми запоминающими устройствами, которые сохраняют биты путем имплантации зарядов на внутренних конденсаторах. Мало того, что такие воспоминания более компактны, чем предохранители-PROM, но если они размещены в пакетах с ультрафиолетовым излучением, их можно стереть и повторно использовать. Обратите внимание, что даже так называемые «одноразовые программируемые» воспоминания почти всегда используют эту же конструкцию, но просто размещаются в UV-непрозрачных пакетах.

два человека, указывающие на большую матрицу диодов диодный матричный магазин 1950 MIT Whirlwind Computer

транзисторная матрица с крошечными SMD-транзисторами транзисторно-матричный контрольный магазин 2005 года процессор MT15

ответил supercat 13 MarpmSun, 13 Mar 2011 20:39:43 +03002011-03-13T20:39:43+03:0008 2011, 20:39:43
7

Я не уверен, что кто-то обратился к реальному вопросу OP, который кажется «Как компьютер знает, как начать?» , поэтому я взломаю его .

Начните с аналогии. «Как транзистор знает, как начать?» Конечно, это не так, это просто работает в соответствии с физикой, и инженер строит схему так, чтобы она начиналась в известном состоянии.

Компьютеры знают, как начать работу, потому что они являются схемами (очень сложными, конечно), и они построены для запуска в определенном состоянии. В современной машине это состояние может быть таким, в котором основная шина перенаправляет часть адресного пространства пользователю ПЗУ на материнской плате в качестве малой памяти (ПЗУ, сжигаемое с помощью BIOS). В машине первого поколения начальное состояние могло быть остановлено CPU, счетчик программ в ноль и активная подсистема памяти.

ответил dmckee 8 Jam1000000amSat, 08 Jan 2011 02:33:41 +030011 2011, 02:33:41
6

Операционная система - это компьютерная программа, которая запускается непосредственно на процессоре. Он может быть написан на любом языке, который может быть скомпилирован или собран в машинные инструкции. Сборка и C - общий выбор.

Код загружается в процессоры по одной команде за раз из хранилища - ПЗУ или ОЗУ.

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

Альтаир 8800, первый персональный компьютер, был запрограммирован переключателями.

Чтобы узнать, как процессор построен из цифровой логики, см. https://electronics.stackexchange.com/questions/5516/a-fun-book-to-learn-computer-architecture-for-not-exactly-beginners

Для истории см. http://en.wikipedia.org/wiki/History_of_computing_hardware

ответил Toby Jaffey 7 Jam1000000amFri, 07 Jan 2011 04:27:00 +030011 2011, 04:27:00
5

Вот немного о действительно старых компьютерах:

Насколько я знаю, в те дни у вас была большая передняя панель компьютера , которая использовалась для программирования их. В принципе, каждая ячейка памяти на этих компьютерах была подключена к коммутаторам. Вы должны включить память, а затем использовать переключатели для установки данных в каждой ячейке. Таким образом, вы по очереди вводите программу в память компьютера. Затем вы должны установить начальную точку программы и начать выполнение.

По мере развития технологии были разработаны так называемые программы загрузчика. Это короткие программы, целью которых является запуск другой программы из памяти компьютера. Проблема с входом программ побита (и более поздняя версия более чем на один бит с использованием восьмеричных и более поздних шестнадцатеричных чисел) заключалась в том, что она была очень медленной, и была большая вероятность того, что оператор совершит ошибку при загрузке программы. Таким образом, короткие программы будут использоваться для загрузки больших программ, хранящихся в памяти компьютера. С течением времени часть кода, которую нужно вводить вручную, уменьшилась, и на современных компьютерах у нас часто есть загрузчики, написанные в каком-то ПЗУ или даже в флэш-памяти.

ответил AndrejaKo 7 Jam1000000amFri, 07 Jan 2011 06:14:35 +030011 2011, 06:14:35
4

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

Таким образом, это позволит вам (мучительно) скомпилировать список Op-кодов вручную один за другим и ввести их в чип.

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

ответил BG100 7 Jam1000000amFri, 07 Jan 2011 07:06:29 +030011 2011, 07:06:29
1

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

ответил Kaz 26 +04002012-10-26T04:52:31+04:00312012bEurope/MoscowFri, 26 Oct 2012 04:52:31 +0400 2012, 04:52:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132