Я задавал себе этот вопрос больше года, и я просто решил задать этот вопрос здесь. Я не знаю, правильное ли это место или нет.

Насколько я знаю, микропроцессоры представляют собой совокупность транзисторов, но я не понимаю в них некоторых вещей: как изобретатель микропроцессоров (или, возможно, компьютеров) написал первый код и запрограммировал их микросхемы? Не было других компьютеров, когда они делали первый.

Еще одна вещь, которую я не понимаю, - как IC - особенно первая IC, которая была фактически набором транзисторов - знает, что означают эти коды? Как IC понимает, что делать, когда в инструкции написано 1 или 0 или, может быть, 111011010101?

Благодарю.

3 ответа3

0

Когда вы пишете двоичный код, он в основном подается последовательно в процессор, чтобы выполнить часть x или y или z.

Двоичный код не является постоянным на всех компьютерах, поэтому вы не можете запускать программы X-Box на PS/3. Как и программное обеспечение, процессоры обновляются, сохраняя совместимость с предыдущими версиями: вот почему у вас Intel 286/386/486/Pentiums и т.д.

Не следует предполагать, что двоичный код интерпретируется побитовым образом. Например, на одной машине, на которой я работал, был набор кодов, таких как 1ab "copy register a to b". Вы должны написать для него загрузочный ремешок в определенной памяти, а затем выполнить системный переход. Все это 8-битные коды, а не 1-битные коды.

Таким образом, в теории, оп-код является электронным кодом переключения для чипа: он открывает и закрывает различные пути и позволяет содержимому перетекать из А в В. Другие - это прерывания, которые говорят компьютеру делать все, что он должен делать (вроде как Go!).

0

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

Эти транзисторы могут быть организованы в логические вентили, например, NAND, NOR и вентильные инверторы.
Эти ворота могут затем использоваться для создания регистров и логических схем.
Одна из этих схем в CPU - это функциональный блок, называемый декодером команд.
Именно этот декодер команд переводит каждый машинный код (то, что вы называете двоичным кодом) в сигналы для фактического выполнения этого кода операции.

Как изобретатель микропроцессоров (или, возможно, компьютеров) написал первый код и запрограммировал их IC?

Почему ваш вопрос о "микропроцессорах"?
Микропроцессоры - это просто подмножество нескольких типов процессоров цифровых компьютеров. Цифровые электронные компьютеры существовали в течение нескольких десятилетий до появления первого микропроцессора.

Центральное место в концепции современного компьютера занимает память для хранения (а) программы в виде машинного кода и (б) данных. (Я удобно игнорирую компьютеры HLL.) В худшем случае будет использоваться лицевая панель для ручного ввода машинного кода в память или использование предварительно запрограммированной памяти, например, PROM или EPROM.

Еще одна вещь, которую я не понимаю, - как IC (особенно первая IC, которая на самом деле была совокупностью транзисторов) знает, что означают эти коды?

IC - это просто "интегральная схема". Эта схема может быть как для аналоговых, так и для цифровых приложений (или даже смешанного сигнала). IC (иначе называемый "чип") и микропроцессор не являются синонимами. Микропроцессор - это цифровая (или логическая) ИС. Но не каждая микросхема является микропроцессором.

Как IC понимает, что делать, когда в инструкции написано 1 или 0 или, может быть, 111011010101?

Предполагая, что вы спрашиваете о процессоре, эта функция выполняет декодер команд . Существует два основных метода реализации этой функциональности: использование аппаратного или микропрограммирования.
Обратите внимание, что микропрограммирование не имеет ничего общего с микропроцессорами. Первые микропроцессоры были зашиты (и не имели микропрограммирования). Первые микропрограммированные компьютеры были мейнфреймами, такими как IBM S/360.

0

Быстрый ответ: разработчики процессора сначала проектируют набор команд (значения различных кодов команд, какие операнды поддерживаются и как они указываются и т.д.), А затем строят процессор, соединяя логические элементы так, чтобы реализовать этот набор инструкций.

Если бы они подключили его по-другому, набор инструкций был бы другим.

Микропрограммированные процессоры: как минимум, это некоторый тип памяти (есть несколько возможностей) как часть взаимосвязей, которые определяют, что представляет собой набор инструкций. Таким образом, изменяя содержимое этой памяти ("микрокод"), можно изменить набор команд. Я сказал "как минимум" - это может быть намного сложнее.

Если вы хотите узнать больше, я бы посоветовал начать с середины: выучить язык ассемблера для некоторой машины. Желательно не x86/x64, так как это очень сложно. Я бы выбрал ARM, если вы хотите что-то, чей язык ассемблера относительно прост в изучении, а также актуален для современных технологий.

Затем, если вы хотите узнать больше, узнайте о логических схемах: AND, OR, NOT, NAND, NOR; затем последовательные схемы, начиная с триггеров и т. д.

Когда вы начнете думать о том, как построить полноценный процессор или что-то очень простое, например, PDP-8, из этих частей вы будете думать: «Человек, это огромный и сложный процесс». Ну, это огромно. Но это не так сложно, как вы могли подумать. Сложность в основном складывается в слои: когда вы понимаете нижний уровень, вам больше не нужно беспокоиться о его деталях, просто о том, что он делает. Кроме того, есть очевидная сложность в повторении. 32-разрядный сумматор имеет примерно в 16 раз больше вентилей, чем 2-разрядный сумматор. Но если вы понимаете 2-битный сумматор, вы можете понять 32-битную версию. Это просто больше того, что вы уже видели.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .