Компьютерная архитектура

Из Википедии, бесплатной энциклопедии
Блок-схема базового компьютера с однопроцессорным процессором. Черные линии обозначают поток управления, тогда как красные линии обозначают поток данных. Стрелки указывают направление потока.

В информатике и компьютерной инженерии компьютерная архитектура — это описание структуры компьютерной системы , состоящей из составных частей. [1] Иногда это может быть высокоуровневое описание, игнорирующее детали реализации. [2] На более подробном уровне описание может включать проект архитектуры набора команд , микроархитектуры проект , проект логики и реализацию . [3]

История [ править ]

Первая документированная архитектура компьютера была в переписке между Чарльзом Бэббиджем и Адой Лавлейс , описывающей аналитическую машину . Создавая компьютер Z1 в 1936 году, Конрад Цузе описал в двух патентных заявках для своих будущих проектов, что машинные инструкции могут храниться в том же хранилище, что и данные, то есть концепция хранимой программы . [4] [5] Два других ранних и важных примера:

Термин «архитектура» в компьютерной литературе восходит к работе Лайла Р. Джонсона и Фредерика П. Брукса-младшего , членов отдела машинной организации главного исследовательского центра IBM, в 1959 году. Джонсон имел возможность написать собственную исследовательское сообщение о Stretch , разработанном IBM , суперкомпьютере для Национальной лаборатории Лос-Аламоса (в то время известной как Научная лаборатория Лос-Аламоса). Чтобы описать уровень детализации обсуждения роскошно украшенного компьютера, он отметил, что его описание форматов, типов инструкций, параметров оборудования и повышения скорости было на уровне «архитектуры системы», термина, который казался более полезным, чем «организация машины». ". [8]

Впоследствии Брукс, дизайнер Stretch, открыл главу 2 книги под названием « Планирование компьютерной системы: Project Stretch», заявив: «Компьютерная архитектура, как и другие архитектуры, — это искусство определения потребностей пользователя структуры, а затем проектирование с учетом удовлетворить эти потребности как можно более эффективно в рамках экономических и технологических ограничений». [9]

Брукс продолжал помогать в разработке линейки компьютеров IBM System/360 (теперь называемой IBM zSeries ), в которой «архитектура» стала существительным, определяющим «то, что нужно знать пользователю». [10] Позже пользователи компьютеров стали использовать этот термин во многих менее явных смыслах. [11]

Самые ранние компьютерные архитектуры были спроектированы на бумаге, а затем непосредственно встроены в окончательную аппаратную форму. [12] Позже прототипы компьютерной архитектуры были физически построены в виде компьютера с транзисторно-транзисторной логикой (TTL), такие как прототипы 6800 и PA-RISC , протестированы и настроены перед принятием окончательной аппаратной формы. По состоянию на 1990-е годы новые компьютерные архитектуры обычно «строились», тестировались и настраивались внутри какой-либо другой компьютерной архитектуры в симуляторе компьютерной архитектуры ; или внутри FPGA в качестве программного микропроцессора ; или и то, и другое — прежде чем переходить к окончательной аппаратной форме. [13]

Подкатегории [ править ]

Дисциплина компьютерной архитектуры имеет три основные подкатегории: [14]

Есть и другие технологии в компьютерной архитектуре. Следующие технологии используются в более крупных компаниях, таких как Intel, и были оценены в 2002 году. [14] рассчитывать на 1% всей компьютерной архитектуры:

  • Макроархитектура : архитектурные слои более абстрактны, чем микроархитектура.
  • Архитектура набора инструкций ассемблера . Умный ассемблер может преобразовать абстрактный язык ассемблера, общий для группы машин, в немного отличающийся машинный язык для разных реализаций .
  • Макроархитектура, видимая программисту : инструменты языка более высокого уровня, такие как компиляторы, могут определять согласованный интерфейс или контракт с использующими их программистами , абстрагируя различия между базовыми ISA, UISA и микроархитектурами . Например, стандарты C , C++ или Java определяют различные макроархитектуры, видимые программисту.
  • Микрокод : микрокод — это программное обеспечение, которое преобразует инструкции для запуска на чипе. Он действует как оболочка оборудования, представляя предпочтительную версию интерфейса набора команд оборудования. Эта возможность трансляции инструкций дает разработчикам микросхем гибкие возможности: Например, 1. Новая улучшенная версия микросхемы может использовать микрокод для представления точно такого же набора команд, что и старая версия микросхемы, поэтому все программное обеспечение, предназначенное для этого набора команд, будет работать на новой микросхеме без нуждающиеся в изменениях. Например, 2. Микрокод может предоставлять различные наборы инструкций для одного и того же основного чипа, что позволяет ему запускать более широкий спектр программного обеспечения.
  • UISA : Архитектура набора пользовательских инструкций относится к одному из трех подмножеств RISC- инструкций ЦП, предоставляемых RISC-процессорами PowerPC . Подмножество UISA — это инструкции RISC, представляющие интерес для разработчиков приложений. Два других подмножества — это инструкции VEA (архитектура виртуальной среды), используемые разработчиками систем виртуализации, и OEA (архитектура операционной среды), используемые разработчиками операционных систем. [16]
  • Архитектура контактов : аппаратные функции, которые микропроцессор должен обеспечивать аппаратной платформе, например, контакты x86 A20M, FERR/IGNNE или FLUSH. Также сообщения, которые должен выдать процессор, чтобы внешние кэши можно было сделать недействительными (очистить). Функции архитектуры выводов более гибкие, чем функции ISA, поскольку внешнее оборудование может адаптироваться к новым кодировкам или перейти от вывода к сообщению. Термин «архитектура» подходит, потому что функции должны быть предусмотрены для совместимых систем, даже если детальный метод изменится.

Роли [ править ]

Определение [ править ]

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

Реализация включает в себя проектирование интегральной схемы, упаковку, питание и охлаждение. Оптимизация проекта требует знания компиляторов, операционных систем, логического проектирования и упаковки. [18]

Архитектура набора команд [ править ]

Архитектура набора команд (ISA) — это интерфейс между программным и аппаратным обеспечением компьютера, а также ее можно рассматривать как взгляд программиста на машину. Компьютеры не понимают языки программирования высокого уровня, такие как Java, C++ или большинство используемых языков программирования. Процессор понимает только инструкции, закодированные в каком-либо числовом виде, обычно в виде двоичных чисел . Программные инструменты, такие как компиляторы , преобразуют эти языки высокого уровня в инструкции, понятные процессору.

Помимо инструкций, ISA определяет элементы компьютера, доступные программе, например, типы данных , регистры , режимы адресации и память. Инструкции определяют местонахождение этих доступных элементов с помощью индексов регистров (или имен) и режимов адресации памяти.

ISA компьютера обычно описывается в небольшом руководстве по эксплуатации, в котором описывается, как кодируются инструкции. Кроме того, он может определять короткие (неопределенные) мнемонические имена для инструкций. Имена можно распознать с помощью инструмента разработки программного обеспечения, называемого ассемблером . Ассемблер — это компьютерная программа, которая переводит удобочитаемую форму ISA в форму, читаемую компьютером. Дизассемблеры также широко доступны, обычно в отладчиках и программах для выявления и исправления неисправностей в двоичных компьютерных программах.

МСА различаются по качеству и полноте. Хороший ISA компромисс между удобством программиста (насколько легко понять код), размером кода (сколько кода требуется для выполнения определенного действия), стоимостью компьютера для интерпретации инструкций (большая сложность означает, что для выполнения определенного действия требуется больше оборудования). декодировать и выполнять инструкции) и скорость компьютера (с более сложным оборудованием декодирования время декодирования увеличивается). Организация памяти определяет, как инструкции взаимодействуют с памятью и как память взаимодействует сама с собой.

дизайна Во время эмуляции эмуляторы могут запускать программы, написанные с использованием предлагаемого набора команд. Современные эмуляторы могут измерять размер, стоимость и скорость, чтобы определить, соответствует ли конкретная ISA своим целям.

Компьютерная организация [ править ]

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

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

Реализация [ править ]

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

  • Реализация логики проектирует схемы, необходимые на уровне логического элемента .
  • Реализация схемы предполагает проектирование на уровне транзисторов базовых элементов (например, вентилей, мультиплексоров , защелок ), а также некоторых более крупных блоков ( АЛУ , кэшей и т. д.), которые могут быть реализованы на уровне логических элементов или даже на физическом уровне. если дизайн этого требует.
  • Физическая реализация рисует физические схемы. Различные компоненты схемы размещаются на плане микросхемы или на плате и создаются соединяющие их провода.
  • При проверке проекта проверяется компьютер в целом, чтобы увидеть, работает ли он во всех ситуациях и во всех временных рамках. После начала процесса проверки проекта проект на логическом уровне тестируется с использованием логических эмуляторов. Однако обычно это слишком медленно для проведения реалистичного теста. Итак, после внесения исправлений на основе первого теста прототипы создаются с использованием программируемых пользователем вентильных матриц ( FPGA ). Большинство хобби-проектов останавливаются на этом этапе. Последним шагом является тестирование прототипа интегральной схемы, которое может потребовать нескольких доработок.

Для процессоров весь процесс реализации организован по-другому и часто называется проектированием процессора .

Цели дизайна [ править ]

Точная форма компьютерной системы зависит от ограничений и целей. В компьютерных архитектурах обычно учитываются стандарты, мощность и производительность, стоимость, объем памяти, задержка (задержка — это время, необходимое для передачи информации от одного узла к источнику) и пропускная способность. Иногда важными факторами являются и другие факторы, такие как характеристики, размер, вес, надежность и возможность расширения.

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

Производительность [ править ]

Производительность современных компьютеров часто описывается числом инструкций на цикл (IPC), которое измеряет эффективность архитектуры на любой тактовой частоте; более высокая скорость IPC означает, что компьютер работает быстрее. У старых компьютеров количество IPC составляло всего 0,1, в то время как у современных процессоров оно легко достигало почти 1. Суперскалярные процессоры могут достигать трех-пяти IPC, выполняя несколько инструкций за такт. [ нужна цитата ]

Подсчет команд машинного языка может ввести в заблуждение, поскольку в разных ISA они могут выполнять разный объем работы. «Инструкция» в стандартных измерениях — это не количество инструкций машинного языка ISA, а единица измерения, обычно основанная на скорости компьютерной архитектуры VAX .

Многие люди измеряли скорость компьютера по тактовой частоте (обычно в МГц или ГГц). Это относится к циклам в секунду основной тактовой частоты процессора. Однако этот показатель несколько вводит в заблуждение, поскольку машина с более высокой тактовой частотой не обязательно может иметь большую производительность. В результате производители отошли от тактовой частоты как показателя производительности.

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

Существует два основных типа скорости: задержка и пропускная способность. Задержка — это время между началом процесса и его завершением. Пропускная способность – это объем работы, выполняемой в единицу времени. Задержка прерывания — это гарантированное максимальное время реакции системы на электронное событие (например, когда диск завершает перемещение некоторых данных).

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

Бенчмаркинг учитывает все эти факторы, измеряя время, необходимое компьютеру для запуска серии тестовых программ. Хотя бенчмаркинг показывает сильные стороны, он не должен быть тем, как вы выбираете компьютер. Часто измеренные машины разбиваются по разным меркам. Например, одна система может быстро обрабатывать научные приложения, а другая — более плавно обрабатывать видеоигры. Более того, разработчики могут нацеливать и добавлять в свои продукты специальные функции с помощью аппаратного или программного обеспечения, которые позволяют быстро выполнять конкретный тест, но не дают аналогичных преимуществ для общих задач.

Энергоэффективность [ править ]

Энергоэффективность — еще один важный показатель современных компьютеров. Более высокую энергоэффективность часто можно обменять на более низкую скорость или более высокую стоимость. Типичным измерением энергопотребления в компьютерной архитектуре является MIPS/Вт (миллионы инструкций в секунду на ватт).

Современные схемы требуют меньше энергии на транзистор по мере роста количества транзисторов на кристалл. [19] Это связано с тем, что каждый транзистор, помещенный в новый чип, требует собственного источника питания и требует создания новых путей для его питания. Однако количество транзисторов на чип начинает увеличиваться более медленными темпами. Таким образом, энергоэффективность становится столь же важной, если не более важной, чем размещение все большего и большего количества транзисторов в одном чипе. Недавние разработки процессоров продемонстрировали этот акцент, поскольку они уделяют больше внимания энергоэффективности, а не размещению как можно большего количества транзисторов в одном кристалле. [20] В мире встраиваемых компьютеров энергоэффективность уже давно является важной целью наряду с пропускной способностью и задержкой.

рыночного спроса Изменения

За последние несколько лет увеличение тактовой частоты росло медленнее по сравнению с улучшениями в области снижения энергопотребления. Это было вызвано отменой закона Мура и требованием увеличения срока службы батарей и уменьшения размеров мобильных технологий. Это изменение акцента с более высоких тактовых частот на энергопотребление и миниатюризацию можно продемонстрировать по значительному снижению энергопотребления, до 50%, о котором сообщила Intel в выпуске микроархитектуры Haswell ; где они снизили контрольный показатель энергопотребления с 30–40 Вт до 10–20 Вт. [21] Сравнивая это с увеличением скорости обработки с 3 до 4 ГГц (с 2002 по 2006 год) [22] видно, что акцент в исследованиях и разработках смещается от тактовой частоты в сторону меньшего энергопотребления и меньшего места.

См. также [ править ]

Ссылки [ править ]

  1. ^ Драгони, Николь (н. д.). «Введение в одноранговые вычисления» (PDF) . DTU Compute — Кафедра прикладной математики и информатики . Люнгбю, Дания.
  2. ^ Клементс, Алан. Принципы компьютерного оборудования (Четвертое изд.). п. 1. Архитектура абстрактно описывает внутреннюю организацию компьютера; то есть он определяет возможности компьютера и его модель программирования. У вас могут быть два компьютера, построенных по-разному, с использованием разных технологий, но с одинаковой архитектурой.
  3. ^ Хеннесси, Джон; Паттерсон, Дэвид. Компьютерная архитектура: количественный подход (Пятое изд.). п. 11. Эта задача имеет множество аспектов, включая разработку набора команд, функциональную организацию, разработку логики и реализацию.
  4. ^ Уильямс, ФК; Килберн, Т. (25 сентября 1948 г.), «Electronic Digital Computers» , Nature , 162 (4117): 487, Bibcode : 1948Natur.162..487W , doi : 10.1038/162487a0 , S2CID   4110351 , заархивировано из оригинала 6 апреля. 2009 г. , получено 10 апреля 2009 г.
  5. ^ Сюзанна Фабер, «Попытки Конрада Цузе подать заявку на патент на Z3», 2000 г.
  6. ^ Нойманн, Джон (1945). Первый проект отчета о EDVAC . п. 9.
  7. ^ Воспроизведено в книге Б. Дж. Коупленда (ред.), «Автоматическая вычислительная машина Алана Тьюринга», Oxford University Press, 2005, стр. 369–454.
  8. ^ Джонсон, Лайл (1960). «Описание растяжения» (PDF) . п. 1 . Проверено 7 октября 2017 г.
  9. ^ Бухгольц, Вернер (1962). Планирование компьютерной системы . п. 5.
  10. ^ «Система 360: от компьютеров к компьютерным системам» . IBM100 . 7 марта 2012 года . Проверено 11 мая 2017 г.
  11. ^ Хеллиге, Ганс Дитер (2004). «Генезис научных концепций компьютерной архитектуры: от «системы органов» к слоистой модели проектного пространства». Истории информатики: видения, парадигмы, лейтмотивы . стр. 411–472.
  12. ^ ACE разработала семь бумажных проектов за один год, прежде чем в 1948 году был начат прототип. [Б.Дж. Коупленд (ред.), «Автоматическая вычислительная машина Алана Тьюринга», OUP, 2005, стр. 57]
  13. ^ Шмальц, магистр наук «Организация компьютерных систем» . УФ ЦИСЭ . Проверено 11 мая 2017 г.
  14. ^ Перейти обратно: а б Джон Л. Хеннесси и Дэвид А. Паттерсон. Компьютерная архитектура: количественный подход (Третье изд.). Издательство Морган Кауфманн.
  15. ^ Лапланте, Филипп А. (2001). Словарь по информатике, технике и технологиям . ЦРК Пресс. стр. 94–95. ISBN  0-8493-2691-5 .
  16. ^ Фрей, Брэд (24 февраля 2005 г.). «Книга по архитектуре PowerPC, версия 2.02» . Корпорация IBM.
  17. ^ Нуль, Линда (2019). Основы компьютерной организации и архитектуры (5-е изд.). Берлингтон, Массачусетс: Jones & Bartlett Learning. п. 280. ИСБН  9781284123036 .
  18. ^ Мартин, Майло. «Что такое компьютерная архитектура?» (PDF) . УПЕНН . Проверено 11 мая 2017 г.
  19. ^ «Интегральные схемы и производство» (PDF) . Проверено 8 мая 2017 г.
  20. ^ «Exynos 9 Series (8895)» . Samsung . Проверено 8 мая 2017 г.
  21. ^ «Измерение мощности процессора TDP и ACP» (PDF) . Интел . Апрель 2011 года . Проверено 5 мая 2017 г.
  22. ^ «История производительности процессоров» (PDF) . cs.columbia.edu . 24 апреля 2012 года . Проверено 5 мая 2017 г.

Источники [ править ]

Внешние ссылки [ править ]