Каковы различные типы компьютерных архитектур?


20

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

Я знаю только о двух, один из них - фон Нейман, а второй - Гарвард. Также я знаю о RISC, который используется в uC AVR.


2
Есть третий, который модифицирован Гарвардом. Чистый Гарвард не сможет использовать одно и то же хранилище для хранения программ и данных. Поэтому почти каждая реализация Гарварда была модифицирована, чтобы позволить памяти инструкций быть адресованной как данные.
горилла

1
отличный вопрос
анонимный тип

Ответы:


27

Существует много разных видов компьютерных архитектур.

Один из способов классификации компьютерных архитектур по количеству команд, выполняемых за такт. Многие вычислительные машины читают одну инструкцию за раз и выполняют ее (или прикладывают много усилий, чтобы действовать какони делают это, даже если внутренне они делают причудливые суперскалярные и неупорядоченные вещи). Я называю такие машины "машинами фон Неймана", потому что все они имеют узкое место фон Неймана. К таким машинам относятся архитектуры CISC, RISC, MISC, TTA и DSP. Такие машины включают в себя аккумуляторные машины, регистрационные машины и стековые машины. Другие машины читают и выполняют несколько инструкций за один раз (VLIW, суперскаляр), которые преодолевают ограничение в одну инструкцию на такт, но все же достигают узкого места фон Неймана при некотором увеличении количества инструкций на такт. И все же другие машины не ограничены узким местом фон Неймана, потому что они предварительно загружают все свои операции при включении питания, а затем обрабатывают данные без дальнейших инструкций. Такие машины не фон Неймана включают в себя архитектуры потоков данных,

Другим способом классификации компьютерных архитектур является соединение (я) между процессором и памятью. Некоторые машины имеют унифицированную память, так что один адрес соответствует одному месту в памяти, и когда эта память является ОЗУ, можно использовать этот адрес для чтения и записи данных или загрузить этот адрес в счетчик программ для выполнения кода. Я называю эти машины машинами Принстона. Другие машины имеют несколько отдельных областей памяти, так что счетчик программ всегда ссылается на «программную память», независимо от того, какой адрес загружен в нее, и обычные операции чтения и записи всегда идут в «память данных», которая является отдельным местом, обычно содержащим разные информация, даже когда биты адреса данных оказываются идентичными битам адреса памяти программ. Эти машины "чистый Гарвард" или "

Несколько человек используют узкое определение «машины фон Неймана», которое не включает гарвардские машины. Если вы один из тех людей, то какой термин вы бы использовали для более общего понятия «машина с узким местом фон Неймана», которая включает в себя как гарвардские, так и принстонские машины и исключает NON-VON?

Большинство встроенных систем используют гарвардскую архитектуру. Некоторые процессоры являются «чисто Гарвардскими», что является, пожалуй, самым простым механизмом встраивания в аппаратное обеспечение: адресная шина к программной памяти только для чтения подключается исключительно к счетчику программ, как, например, многие ранние микрочипы PICmicro. Кроме того, некоторые модифицированные гарвардские машины также помещают константы в память программ, которую можно прочитать с помощью специальной инструкции «чтение константных данных из памяти программ» (отличается от инструкции «чтение из памяти данных»). Программное обеспечение, работающее на указанных выше типах гарвардских машин, не может изменить программную память, которая фактически является ПЗУ для этого программного обеспечения. Некоторые встроенные системы являются «самопрограммируемыми», как правило, с программной памятью во флэш-памяти и специальным «блоком стирания флэш-памяти». инструкция и специальная инструкция «запись блока флэш-памяти» (отличается от обычной инструкции «запись в память данных»), в дополнение к инструкции «чтение данных из памяти программы». Несколько более поздние микрочипы PICmicros и Atmel AVR представляют собой самопрограммируемые модифицированные гарвардские машины.

Еще один способ классификации процессоров по часам. Большинство компьютеров работают синхронно - у них единые глобальные часы. Несколько процессоров асинхронны - у них нет часов - в том числе ILLIAC I и ILLIAC II, которые когда-то были самыми быстрыми суперкомпьютерами в мире.

Пожалуйста, помогите улучшить описание всех видов компьютерных архитектур на http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture .


2
Вау, позор, что ты так долго отказывался от этих знаний ПОСЛЕ того, как я задал вопрос.
Rick_2047

3
@Rick - Похоже, этот ответ занял много времени. Будь благодарен, что Дэвидкари нашел время, чтобы ответить на твой вопрос! Некоторые люди не работают по тому же графику, что и вы.
Кевин Вермеер

2
@reemrevnivek, который был задуман как шутка, чувак.
Rick_2047

Было бы хорошо, если бы этот ответ был помечен как ответ сообщества вики.
Trygve Laugstøl

8

CISC является «противоположностью» RISC. В то время как RISC предпочитает иметь простые инструкции, которые легко оптимизировать для компилятора, и часто одного размера, CISC любит сложные инструкции разного размера.

Например, команда pop в CISC изменит указатель стека и поместит данные из стека в другой регистр. Однако процессор RISC считывает данные одной инструкцией, а затем модифицирует указатель стека второй инструкцией. (обычно есть некоторые исключения, например, PowerPC, который может обновлять указатель стека и помещать данные в стек, но это исключение)

Поскольку инструкции RISC имеют одинаковый размер, дизассемблеры легче писать. Проектирование процессора также проще, потому что конвейер не должен учитывать различные размеры команд. Однако плотность кода CISC имеет тенденцию быть лучше, потому что сложным инструкциям требуется меньше байтов для представления одинакового количества операций, а также потому, что переменная длина команды допускает некоторое «сжатие».

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


1
если вам это нравится, примите это.
Кортук

5

Ну, есть что-то вроде ENIAC, где у вас есть по существу отдельные ALU, и вы «программируете» их, подключая выход одного alu ко входу другого alu, который собирался выполнить следующую операцию с этой промежуточной переменной. Ваши «регистры» и хранилище - это провода, соединяющие алус.

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

Как только память была изобретена и стала практичной, мы вроде как остановились на двух популярных фон Нейман и Гарвард. Выполнение перемонтажа, перфокарт, бумажной ленты или подобных вещей стало менее практичным. И есть стек, основанный (например, zpu), который, я подозреваю, подпадает под категорию Гарварда, а не сам по себе.

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

И что хорошего в платформе гарварда, где процессор не может получить доступ к памяти команд в качестве данных для изменения / обновления загрузчика или для загрузки загрузчиком следующей программы? Почему это не архитектура фон Неймана? Процессор, выполняющийся из одной и той же памяти на одном и том же интерфейсе и работающий с ней, вероятно, последовательно (выбор команд и запись в память не происходят одновременно)?

Две популярные архитектуры на основе памяти более близки, чем они отличаются в текущих реализациях IMO.

Куда падает ГПУ? Или бизнес, в котором я работаю, сетевые процессоры (NPU). В тех случаях, когда у вас есть эти относительно небольшие специализированные микро-двигатели (процессоры), которые выполняются из гармошки, подобной оперативной памяти программы (адресуемой, но вы просто не хотите этого делать из соображений производительности), работайте с различными баранами данных, каждый из которых имеет свое собственное отдельное адресное пространство (отдельный процессор инструкции для каждого пространства), (пространства памяти, работающие параллельно) и через эти оперативные памяти передают промежуточные данные, чтобы следующий вычисление было выполнено следующим микродвигателем в проводной alu (eniac) манере? Как бы ты это назвал? Действительно ли npus и gpus представляют собой модернизированные гарвардские архитектуры?


"Что хорошего в платформе Гарварда, где процессор не может ... загрузить следующую программу для запуска?" Многие процессоры имеют фиксированную программу, которая не может быть изменена программным обеспечением, запущенным на этом процессоре. Одно из преимуществ этой схемы состоит в том, что она делает невозможным «кирпичную» систему с ошибкой, которая записывает данные в произвольную память, или с плохим обновлением программного обеспечения, или даже с хорошим обновлением программного обеспечения и несвоевременным отключением питания. Это усложняет обновление программного обеспечения - но на самом деле, сколько раз вы меняли программное обеспечение в вашей микроволновой печи?
Дэвидкари

2
На микроволновке нет, но я трачу немало времени на программирование микроконтроллеров и перезагружаю программное обеспечение много раз в день. Будучи ограниченным небольшими, безошибочными системами на основе rom, проблема кирпича легко решается с помощью фон Неймана. Описываемые вами системы мало используются для повышения производительности отдельных шин, что является другой особенностью гарвардской архитектуры. Таким образом, я хотел сказать, что гарвардская архитектура просто плохо масштабируется без способа загрузки программ, что делает ее несколько устаревшей.
old_timer

1
Хм, они называют cortex-m3 гарвардом, когда это действительно не так, то же самое с avr (ну, они называют это модифицированным гарвардом). Я уверен, что есть некоторые процессоры с чисто гарвардской архитектурой (PIC), которые раньше были более чистыми по фону Нейману, но большинство из них - модифицированный гарвардский или модифицированный фон Неймана (параллельный доступ к данным и инструкциям), делающий их больше одинаковыми, чем разными. Вот куда я направлялся в своем ответе: чистый Гарвард и чистый фон Нейман быстро устаревают. Плакат хочет знать, что еще там, ну почти все там.
old_timer

4

Архитектуры фон Неймана и Гарварда могут использоваться с процессорами RISC, такими как AVR и ARM. AVR использует Гарвард, в то время как некоторые чипы ARM используют фон Неймана, а некоторые используют Гарвард.


-1, чтобы отсортировать вас под более интересные ответы.
Оскар Ског
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.