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

Обновлено: 03.07.2024

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

Микропроцессор, также известный как центральный процессор или центральный процессор, представляет собой законченный вычислительный механизм, созданный на одном кристалле. Первым микропроцессором был Intel 4004, представленный в 1971 году. 4004 был не очень мощным — все, что он мог делать, это складывать и вычитать, и он мог делать это только 4 бита за раз. Но было удивительно, что все было на одном чипе. До 4004 инженеры строили компьютеры либо из наборов микросхем, либо из отдельных компонентов (транзисторов, соединенных по одному). На базе 4004 был создан один из первых портативных электронных калькуляторов.

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

Развитие микропроцессоров: Intel

Представленный Intel в 1974 году, микропроцессор 8080 стал первым микропроцессором, достаточно мощным для создания компьютера. Библиотека изображений «Наука и общество»/Getty Images

С 2004 года корпорация Intel представила многоядерные микропроцессоры и еще миллионы транзисторов. Но даже эти микропроцессоры подчиняются тем же общим правилам, что и более ранние чипы.

Процессор Intel Core i9 может иметь до восьми ядер, каждое из которых может выполнять любой фрагмент кода, работавший на исходном 8088, всего примерно в 6700 раз быстрее! Каждое ядро ​​может обрабатывать несколько потоков инструкций, что позволяет компьютеру более эффективно управлять задачами.

С 1970-х годов ассортимент продукции Intel значительно расширился. На момент написания этой статьи компания по-прежнему производит процессоры Pentium и Core для компьютеров, но более производительные ПК и серверы могут использовать чип Xeon. Кроме того, Intel предлагает линейки процессоров Celeron и Atom. Celeron предназначен для пользователей компьютеров начального уровня, а процессоры Atom лучше подходят для мобильных устройств и устройств, являющихся частью Интернета вещей.

Несмотря на то, что Intel по-прежнему занимает значительную долю рынка, у нее больше конкурентов, чем ее справедливая доля. AMD конкурирует с Intel на рынке процессоров для ПК, но также имеет большой бизнес в области чипов для графических процессоров, популярных среди геймеров. Nvidia, известная своими графическими чипами, также производит процессоры. В 2020 году Apple представила свои чипы серии M, которые заменяют чипы Intel, которые Apple использовала для своих компьютеров Macintosh. Samsung также может работать над собственным дизайном процессоров. Многие другие компании производят процессоры для других применений электроники, таких как автомобили и продукты для умного дома. Рынок становится все более и более конкурентным.

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

Умножение двух чисел в памяти
Справа представлена ​​диаграмма, представляющая схему хранения для обычного компьютера. Основная память разделена на ячейки, пронумерованные от (строка) 1: (столбец) 1 до (строка) 6: (столбец) 4. Исполнительный блок отвечает за выполнение всех вычислений. Однако исполнительный блок может работать только с данными, загруженными в один из шести регистров (A, B, C, D, E или F). Предположим, мы хотим найти произведение двух чисел, одно из которых хранится в ячейке 2:3, а другое — в ячейке 5:2, а затем сохранить произведение обратно в ячейку 2:3.

Подход CISC
Основной целью архитектуры CISC является выполнение задачи за минимально возможное количество сборочных линий. Это достигается созданием аппаратного обеспечения процессора, способного понимать и выполнять ряд операций. Для этой конкретной задачи процессор CISC должен быть подготовлен со специальной инструкцией (мы назовем ее «MULT»). При выполнении эта инструкция загружает два значения в отдельные регистры, перемножает операнды в исполнительном блоке, а затем сохраняет произведение в соответствующем регистре. Таким образом, всю задачу умножения двух чисел можно выполнить одной инструкцией:

MULT — это так называемая «сложная инструкция».Он работает непосредственно с банками памяти компьютера и не требует от программиста явного вызова каких-либо функций загрузки или сохранения. Он очень похож на команду на языке более высокого уровня. Например, если мы позволим «а» представлять значение 2: 3 и "b" представляют значение 5:2, то эта команда идентична оператору C "a = a * b."

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

Подход RISC
Процессоры RISC используют только простые инструкции, которые могут быть выполнены за один такт. Таким образом, описанную выше команду «MULT» можно разделить на три отдельные команды: «LOAD», которая перемещает данные из банка памяти в регистр, «PROD», которая находит произведение двух операндов, расположенных в регистрах, и « STORE», который перемещает данные из регистра в банки памяти. Чтобы выполнить точную серию шагов, описанных в подходе CISC, программисту потребуется закодировать четыре строки ассемблера:

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

< TD>Низкое количество циклов в секунду,
большой размер кода
CISC RISC
Упор на оборудование Упор на программное обеспечение
Включает многотактовые
сложные инструкции
Однотактовые,
уменьшенные только инструкция
Память в память:
"LOAD" и "STORE"
включены в инструкции
Регистрация для регистрации :
«ЗАГРУЗИТЬ» и «СОХРАНИТЬ»
являются независимыми инструкциями
Небольшой размер кода,
большое количество циклов в секунду
Транзисторы, используемые для хранения
сложных инструкций
Затрачивает больше транзисторов
в регистрах памяти
Однако стратегия RISC также дает некоторые очень важные преимущества. Поскольку для выполнения каждой инструкции требуется только один тактовый цикл, вся программа будет выполняться примерно за то же время, что и многотактовая команда «MULT». Эти «сокращенные инструкции» RISC требуют меньше транзисторов аппаратного пространства, чем сложные инструкции, оставляя больше места для регистров общего назначения. Поскольку все инструкции выполняются за одинаковое время (т. е. за один такт), возможна конвейерная обработка.

Разделение инструкций "LOAD" и "STORE" фактически уменьшает объем работы, которую должен выполнять компьютер. После выполнения команды «MULT» в стиле CISC процессор автоматически стирает регистры. Если один из операндов необходимо использовать для другого вычисления, процессор должен повторно загрузить данные из банка памяти в регистр. В RISC операнд остается в регистре до тех пор, пока на его место не будет загружено другое значение.

Уравнение производительности
Следующее уравнение обычно используется для выражения производительности компьютера:

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

Препятствия RISC
Несмотря на преимущества обработки на основе RISC, чипам RISC потребовалось более десяти лет, чтобы закрепиться в коммерческом мире. Во многом это было связано с отсутствием поддержки программного обеспечения.

Хотя в линейке Power Macintosh от Apple использовались микросхемы на основе RISC, а Windows NT была совместима с RISC, Windows 3.1 и Windows 95 разрабатывались с учетом процессоров CISC. Многие компании не хотели рисковать с появляющейся технологией RISC. Без коммерческого интереса разработчики процессоров не могли производить микросхемы RISC в достаточно больших объемах, чтобы сделать их цену конкурентоспособной.

Еще одной серьезной неудачей стало присутствие Intel. Хотя их CISC-чипы становились все более громоздкими и трудными в разработке, у Intel были ресурсы, необходимые для разработки и производства мощных процессоров. Хотя чипы RISC могли превзойти усилия Intel в определенных областях, различия были недостаточно велики, чтобы убедить покупателей изменить технологии.

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

Выполняется ли команда: int x = 5 один раз за такт?Другими словами, является ли тактовая частота скоростью, с которой устройство может считывать и выполнять команды в единицу измерения времени?

3 ответа 3

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

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

Это будет как минимум два машинных цикла на цикл. Детерминистическая связь между кодом высокого уровня и сгенерированными машинными инструкциями незначительна или отсутствует; хотя в этом простом случае может так показаться.

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

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

Некоторые процессоры могут выполнять инструкции параллельно, что позволяет выполнять несколько инструкций за один цикл. Другие используют инструкции SIMD (одна инструкция — несколько данных), которые могут одновременно выполнять одну и ту же операцию с разными данными.

Еще один метод, влияющий на пропускную способность инструкций, – это конвейерная обработка, при которой инструкция может выполняться несколько циклов, но в каждом цикле может запускаться новая инструкция, например, если 5 четырехтактных инструкций запускаются одна за другой, выдается один раз за цикл.

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

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

Часто мерой производительности для конкретной архитектуры является число MIPS/МГц, т. е. число инструкций, обычно выполняемых за такт (амортизированное за многие тактовые циклы). Например, ARM Cortex-M3 обеспечивает 1,25 MIPS/МГц, а Renesas SH-4 — 1,8 MIPS/МГц.


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

Несколько регистров специального назначения:
Многие конструкции CISC выделяют специальные регистры для указателя стека, обработки прерываний и т. д. Это может несколько упростить конструкцию оборудования за счет усложнения набора инструкций.

Конвейерная обработка: метод, позволяющий одновременно выполнять части или этапы инструкций для более эффективной обработки инструкций.

Несколько типов данных
Поддерживает простые типы данных, такие как целые числа/символы, для сложных структур данных, таких как записи

Простые режимы адресации
Используйте простые режимы адресации и инструкции фиксированной длины для упрощения конвейерной обработки. Косвенная адресация памяти не предусмотрена.

Идентичные регистры общего назначения
Разрешить использование любого регистра в любом контексте

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

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

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

Расширение кода. Машины CISC выполняют сложные действия с помощью одной инструкции; Компьютерам RISC может потребоваться несколько инструкций для одного и того же действия, расширение кода может быть проблемой.

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

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

За косвенным циклом всегда следует выполнение цикла. За циклом прерывания всегда следует цикл выборки. Как для циклов выборки, так и для циклов выполнения следующий цикл зависит от состояния системы.

Мы предположили, что новый 2-битный регистр называется Код цикла инструкций (ICC). ICC обозначает состояние процессора с точки зрения того, в какой части цикла он находится:-

00 : цикл выборки
01 : непрямой цикл
10 : цикл выполнения
11 : цикл прерывания

В конце каждого цикла ICC устанавливается соответствующим образом. Приведенная выше блок-схема Instruction Cycle описывает полную последовательность микроопераций, зависящую только от последовательности инструкций и шаблона прерывания (это упрощенный пример). Работа процессора описывается как выполнение последовательности микроопераций.

Разные циклы инструкций:

  • Цикл выборки.
    В начале цикла выборки адрес следующей выполняемой инструкции находится в счетчике программ(ПК).
  • Шаг 1. Адрес счетчика программ перемещается в адресный регистр памяти (MAR), так как это единственный регистр, подключенный к адресным линиям системной шины.

    Шаг 2: адрес в MAR помещается на адресную шину, теперь блок управления выдает команду READ на шину управления, и результат появляется на шине данных, а затем копируется в регистр буфера памяти (MBR). Счетчик программ увеличивается на единицу, чтобы подготовиться к следующей инструкции. (Эти два действия можно выполнять одновременно для экономии времени)

  • Таким образом, простой цикл выборки состоит из трех шагов и четырех микроопераций. Символически мы можем записать эту последовательность событий следующим образом: -

    Здесь «I» — длина команды. Обозначения (t1, t2, t3) представляют последовательные единицы времени. Мы предполагаем, что часы доступны для хронометража и испускают регулярные тактовые импульсы. Каждый тактовый импульс определяет единицу времени. Таким образом, все единицы времени имеют одинаковую продолжительность. Каждая микрооперация может быть выполнена в течение одной единицы времени.
    Первый раз: Переместите содержимое ПК в MAR.
    Вторая единица времени: перемещение содержимого ячейки памяти, указанной MAR, в MBR. Увеличьте содержимое ПК на I.
    Третий раз: Переместите содержимое MBR в IR.
    Примечание. И вторая, и третья микрооперации выполняются в течение второй единицы времени.

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

    Шаг 1: Адресное поле инструкции передается в MAR. Это используется для получения адреса операнда.
    Шаг 2: Поле адреса IR обновляется из MBR. (Так что теперь оно содержит прямую адресацию, а не косвенную адресацию)
    Шаг 3: Теперь IR находится в состоянии, как если бы косвенная адресация не применялась.

Примечание. Теперь IR готов к циклу выполнения, но он на мгновение пропускает этот цикл, чтобы рассмотреть цикл прерывания.

Остальные три цикла (Выборка, Косвенная и Прерывание) просты и предсказуемы. Каждый из них требует простой, небольшой и фиксированной последовательности микроопераций. В каждом случае одна и та же микрооперация повторяется каждый раз.
Execute Cycle отличается от них. Например, для машины с N различными кодами операций может выполняться N различных последовательностей микроопераций.
Возьмем гипотетический пример:
рассмотрите инструкцию добавления:

    Начнем с IR, содержащего инструкцию ADD.
    Шаг 1: Адресная часть IR загружается в MAR.
    Шаг 2: Поле адреса IR обновляется из MBR, поэтому считывается эталонная ячейка памяти.
    Шаг 3. Теперь содержимое R и MBR добавляется ALU.

Давайте возьмем сложный пример:-

    Здесь содержимое ячейки X увеличивается на 1. Если результат равен 0, следующая инструкция будет пропущена. Соответствующая последовательность микроопераций будет:-

    Здесь PC увеличивается, если (MBR) = 0. Эта проверка (равна ли MBR нулю или нет) и действие (PC увеличивается на 1) могут быть реализованы как одна микрооперация.
    Примечание. Эта микрооперация проверки и действия может выполняться в течение той же единицы времени, в течение которой обновленное значение MBR сохраняется обратно в память.

    Шаг 1: Содержимое ПК переносится в MBR, чтобы его можно было сохранить для возврата.
    Шаг 2: MAR загружается с адресом, по которому должно быть сохранено содержимое ПК.
    ПК загружается с адресом начала процедуры обработки прерывания.
    Шаг 3: MBR, содержащий старое значение ПК, сохраняется в памяти.

Читайте также: