Що таке різні архітектури комп'ютерів?


20

Я переглядаю книгу «Елементи обчислювальних систем». Ця книга вчить, як побудувати цілий комп’ютер з нуля. Поки я просто переглядав глави комп’ютерної архітектури, я помітив, що все це зосереджено на архітектурі Фон Ноймана. Мені було просто цікаво, що таке інші архітектури та коли і де вони використовуються.

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


2
Є третя, яка є модифікованою Гарвардом. Чистий Гарвард не міг би використовувати один і той же сховище для збереження і програм, і даних. Тому майже кожна реалізація Гарварду була модифікована, щоб дозволяти пам'яті інструкцій розглядати як дані.
горила

1
велике запитання.
Анонімний тип

Відповіді:


27

Існує безліч різноманітних архітектур комп'ютерів.

Один із способів класифікації комп'ютерних архітектур - це кількість інструкцій, що виконуються на добу. Багато обчислювальних машин читають по одній інструкції за один раз і виконують її (або вони докладають багато зусиль, щоб діяти так, нібивони роблять це, навіть якщо всередині вони роблять фантазійні суперскалярні та нестандартні речі). Я називаю такі машини машинами "фон Неймана", тому що всі вони мають вузьке місце фон Неймана. Такі машини включають архітектури CISC, RISC, MISC, TTA і DSP. До таких машин відносяться акумуляторні машини, регістрові машини та штабельні машини. Інші машини читають і виконують кілька інструкцій одночасно (VLIW, супер-скалярний), які порушують ліміт "одна інструкція за годину", але все ж потрапляють у вузьке місце фон Неймана за деякою дещо більшою кількістю інструкцій за годину. Однак інші машини не обмежені вузьким місцем фон Неймана, оскільки вони попередньо завантажують усі свої операції один раз при включенні живлення, а потім обробляють дані без подальших інструкцій. Такі машини, що не Von-Neumann, включають архітектуру потоків даних,

Інший спосіб класифікації комп'ютерних архітектур - це з'єднання між процесором та пам'яттю. У деяких машинах є об'єднана пам'ять, така що одна адреса відповідає одному місцю в пам'яті, і коли ця пам'ять є оперативною пам'яттю, можна використовувати цю адресу для читання та запису даних або завантажувати цю адресу в лічильник програм для виконання коду. Я називаю ці машини Принстон. На інших машинах є кілька окремих просторів пам’яті, так що програмний лічильник завжди посилається на «пам'ять програми» незалежно від того, яка адреса завантажена в нього, і звичайне зчитування та запис завжди переходить до «пам’яті даних», яка є окремим місцем, яке зазвичай містить різні інформація, навіть коли біти адреси даних ідентичні бітам адреси пам'яті програми. Ці машини "чистий Гарвард" або "

Кілька людей використовують вузьке визначення поняття "машина фон Неймана", яке не включає гарвардські машини. Якщо ви один з цих людей, то який термін ви б використали для більш загального поняття "машина, яка має вузьке місце фон Неймана", що включає в себе і гарвардські та принстонські машини, і виключає NON-VON?

Більшість вбудованих систем використовують гарвардську архітектуру. Кілька процесорів - це "чистий Гарвард", який, мабуть, є найпростішим пристроєм для побудови апаратного забезпечення: адресна шина до пам'яті програм, що читається виключно, підключена до лічильника програм, наприклад, багатьох ранніх мікрочіпних PICmicros. Деякі модифіковані Гарвардські машини також додають константи в програмну пам'ять, які можна читати за допомогою спеціальної інструкції "читання постійних даних з пам'яті програми" (відмінної від інструкції "читати з пам'яті даних"). Програмне забезпечення, що працює на вищезгаданих машинах Гарварду, не може змінити пам'ять програми, яка ефективно є ПЗУ для цього програмного забезпечення. Деякі вбудовані системи "самопрограмовані", як правило, з програмною пам'яттю у флеш-пам'яті та спеціальним "стираючим блоком флеш-пам'яті" інструкція та спеціальна інструкція "блок запису флеш-пам'яті" (відрізняється від звичайної інструкції "записувати в пам'ять даних"), крім інструкції "читати дані з пам'яті програми". Ще кілька останніх мікрочіпів PICmicros та Atmel AVR - це самопрограмовані модифіковані апарати Гарварда.

Ще один спосіб класифікувати процесори - це їх годинник. Більшість комп'ютерів є синхронними - вони мають єдиний глобальний годинник. Кілька процесорів є асинхронними - у них немає годинника - в тому числі ILLIAC I та ILLIAC II, які свого часу були найшвидшими суперкомп'ютерами на землі.

Будь ласка, допоможіть покращити опис усіх архітектур комп'ютерів на веб-сайті http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture .


2
Нічого не соромно за те, що стільки часу відмовлялися від цих знань ПІСЛЯ я задав це питання.
Rick_2047

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

2
@reemrevnivek, який мався на увазі як жарт чувак.
Rick_2047

Було б добре, якби ця відповідь була позначена як відповідь вікі спільноти.
Trygve Laugstøl

8

CISC є "протилежністю" RISC. Оскільки RISC вважає за краще прості інструкції, які легко компілятору оптимізувати і часто однакового розміру, CISC захоплюється складними інструкціями різного розміру.

Наприклад, поп-інструкція в CISC модифікує покажчик стека та розміщує дані зі стека в інший реєстр. Однак процесор RISC прочитав би дані з однією інструкцією, а потім змінив покажчик стека з другою інструкцією. (як правило; є деякі винятки, наприклад, PowerPC, який може оновлювати покажчик стека та висувати дані на стек, але це виняток)

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

Є й інші екзотичні архітектури, наприклад VLIW / EPIC. Така архітектура була розроблена з урахуванням паралельної обробки. Однак вони не дуже добре спрацювали, оскільки вони покладають дуже великий тягар на компілятор, щоб оптимізувати, тоді як інші архітектури мають вигадливі вікна інструкцій, які знімають деякий тягар оптимізації з компілятора.


1
якщо вам це подобається, прийміть його.
Кортук

5

Ну, є щось на кшталт ENIAC, де у вас є по суті індивідуальні ALU, і ви "запрограмували" їх, підключивши вихід однієї alu до входу іншої alu, яка збиралася виконати наступну операцію на цій проміжній змінній. Ваші "регістри" та сховища - це дроти, що з'єднують алус.

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

Як тільки пам’ять була винайдена і стала практичною, ми якось розселилися у двох популярних - Фон Нойман і Гарвард. Виконання з електропроводки, перфокарт, паперової стрічки або подібних речей стало менш практичним. І існує стек (наприклад, zpu), який, мабуть, підпадає під категорію Гарварду, а не є власною.

Що з платформами von neumann, які завантажують спалах, що працює лише для читання (у звичайному режимі), на одному інтерфейсі пам'яті та мають оперативні дані для читання / запису даних в іншій (яка іноді може працювати і на обох паралельно), але з точки зору програм знаходяться в одному адресний простір? Або такі, які мають декілька внутрішніх і зовнішніх запам'ятовуючих пристроїв / інтерфейсів, які працюють паралельно, але знаходяться в одному нейманному просторі.

І яка користь - платформа harvard, де процесор не може отримати доступ до пам'яті інструкцій як даних для зміни / оновлення завантажувача або для завантаження завантажувача наступної програми, що запускається? Чому це не архітектура фон Неймана? Процесор, який виконує та працює на одній і тій же пам’яті в одному інтерфейсі, ймовірно, послідовно (витяг інструкцій та пам'ять записуються не одночасно)?

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

Де падіння gpu? Або бізнес, в якому я працюю, мережеві процесори (NPU). Там, де у вас є порівняно невеликі мікроінженери (процесори), які виконуються з програмного барана, подібного до такої функції (адресований, але ви просто не хочете цього робити з міркувань продуктивності), працюйте над різними барабанами даних, кожен з яких має свій окремий простір адреси (окремий процесор інструкції для кожного простору), (простори пам'яті, що працюють паралельно), і через ці барані передають проміжні дані, щоб наступне обчислення було зроблено наступним мікроінженером у дротовому алю (eniac), як мода? Як би ти це назвав? Чи npus і gpus просто фантазійні модифіковані архітектури гарвардів?


"яка корисна платформа harvard, де процесор не може ... завантажити наступну програму для запуску?" Багато процесорів мають фіксовану програму, яку неможливо змінити програмним забезпеченням, що працює на цьому процесорі. Однією з переваг цієї домовленості є те, що вона унеможливлює «цеглити» систему помилкою, яка записує у випадкову пам’ять, або поганим оновленням програмного забезпечення, або навіть з хорошим оновленням програмного забезпечення та несвоєчасним збоєм живлення. Це ускладнює оновлення програмного забезпечення - але дійсно, скільки разів ви змінили програмне забезпечення у мікрохвильовій печі?
davidcary

2
На мікрохвильовій печі немає, але я витрачаю неабияку кількість часу на кодування мікроконтролерів та перезавантаження програмного забезпечення багато разів на день. Обмежившись невеликими системами, що не мають помилок, на базі рому, проблему з обмеженнями легко вирішити за допомогою von neumann. Описані вами системи мало використовуються для підвищення продуктивності окремих шин, інша особливість архітектури гарвард. Отже, моя думка полягала в тому, що архітектура harvard просто не масштабує без способу завантаження програм, роблячи її дещо застарілою.
old_timer

1
Гм, вони називають корвард-м3-го голоду, коли він справді не є, те саме з avr (добре, вони називають його модифікованим харвардом) Я впевнений, що існують чисті процесори архітектури harvard (PIC), які раніше були чистішими фон neumann, але більшість - це модифікований гарвард або модифікований von neumann (паралельний доступ до даних та інструкцій), що робить їх більш однаковими, ніж різними. Ось де я головував у своїй відповіді, чистий гавард і чистий фон Нейман швидко старіють. Плакат хоче знати, що ще там, ну майже все там.
old_timer

4

І архітектури фон Неймана, і Гарвард можуть використовуватися з процесорами RISC, такими як AVR та ARM. AVR використовує Гарвард, тоді як деякі ARM-мікросхеми використовують фон Неймана, а деякі - Harvard.


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