Архитектура компьютера

Гомогенные однокристальные мультипроцессоры

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

Для малых однокристальных мультипроцессоров имеются два типовых проектных решения. В первом из них (рис. 8.8, а) присутствует одна микросхема и два конвейера — таким образом, скорость исполнения команд теоретически удваивается. Во втором решении (рис. 8.8, б) в микросхеме предусмотрено два независимых ядра, каждое из которых содержит полноценный процессор. Ядром называется большая микросхема (например, процессор, контроллер ввода-вывода или кэш-память), которая размещается на микросхеме в виде модуля, как правило, вместе с несколькими другими ядрами.
Читать дальше »

Однокристальные мультипроцессоры

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

Многопоточность в Pentium 4

Разобравшись с теорией многопоточности, рассмотрим практический пример — Pentium 4. Уже на этапе разработки этого процессора инженеры Intel продолжали работу над повышением его быстродействия без внесения изменений в программный интерфейс. Рассматривалось пять простейших способов:

1. Повышение тактовой частоты.

2. Размещение на одной микросхеме двух процессоров.

3. Введение новых функциональных блоков.

4. Удлинение конвейера.

5. Использование многопоточности.

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

Внутрипроцессорная многопоточность

Для всех современных конвейеризованных процессоров характерна одна и та же проблема — если при запросе к памяти слово не обнаруживается в кэшах первого и второго уровней, на загрузку этого слова в кэш уходит длительное время, в течение которого конвейер простаивает. Одна из методик решения этой проблемы называется внутрипроцессорной многопоточностью (on-chip multithreading). Она позволяет процессору одновременно управлять несколькими программными потоками и тем самым маскировать простои. Вкратце принцип многопоточ-ности можно изложить так: если программный поток 1 блокируется, процессор может обеспечить полную загрузку аппаратуры, запустив программный поток 2.

Основополагающая идея проста, реализуется она разными способами, которые мы и рассмотрим. Первый из них, называемый мелкомодульной многопоточностью (fine-grained multithreading), применительно к процессору, способному вызывать одну команду за такт, иллюстрирует рис. 8.5. На рис. 8.5, а-в изображено три программных потока (A , B, C), соответствующих 12 машинным циклам. В ходе первого цикла поток А выполняет команду A1. Поскольку эта команда завершается за один цикл, при наступлении второго цикла запускается команда А2. Ее обращение в кэш первого уровня оказывается неудачным, поэтому до извлечения нужного слова из кэша второго уровня проходит два цикла. Исполнение потока продолжается в цикле 5. Как показано на рисунке, потоки В и С также регулярно простаивают. В рамках такого решения вызов последующей команды до завершения предыдущей не осуществляется. Точнее, при наличии сложного счетчика обращений в некоторых случаях это допустимо, но такую возможность мы для простоты исключаем.
Читать дальше »

Вызов страниц по требованию и рабочее множество

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

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

Реализация страничной организации памяти

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

Виртуальное адресное пространство разбивается на ряд страниц равного размера, обычно от 512 байт до 64 Кбайт, хотя иногда встречаются страницы по 4 Мбайт. Размер страницы всегда должен быть степенью двойки. Физическое адресное пространство тоже разбивается на части равного размера таким образом, чтобы каждая такая часть основной памяти вмещала ровно одну страницу. Эти части основной памяти называются страничными кадрами. На рис. 6.2 основная память содержит только один страничный кадр. На практике обычно имеются несколько тысяч страничных кадров.
Читать дальше »

Страничная организация памяти

Идею о разделении понятий адресного пространства и адресов памяти выдвинула группа ученых из Манчестера. Рассмотрим в качестве примера типичный компьютер того времени с 16-разрядным полем адреса в командах и 4096 словами памяти. Программа, работающая на таком компьютере, могла обращаться к 65 536 словам памяти (поскольку адреса были 16-разрядными, а 216 = 65 536). Обратите внимание, что число адресуемых слов зависит только от числа битов адреса и никак не связано с числом реально доступных слов в памяти. Адресное пространство такого компьютера состоит из чисел 0, 1,2,65 535, так как это — набор всех возможных адресов. Однако в действительности компьютер мог иметь гораздо меньше слов в памяти.

До изобретения виртуальной памяти приходилось проводить жесткое различие между адресами, меньшими 4096, и адресами, равными или большими 4096. Эти две части рассматривались как полезное адресное пространство и бесполезное адресное пространство соответственно (адреса выше 4095 были бесполезными, поскольку они не соответствовали реальным адресам памяти). Никакого различия между адресным пространством и адресами памяти не проводилось, поскольку между ними подразумевалось взаимно-однозначное соответствие.
Читать дальше »

Общий обзор уровня архитектуры набора команд Pentium 4

Процессор Pentium 4 развивался на протяжении многих лет. Как отмечалось в главе 1, его история восходит к самым первым микропроцессорам. Основная архитектура команд обеспечивает выполнение программ, написанных для процессоров 8086 и 8088 (которые имеют одну и ту же архитектуру команд), и отчасти даже для 8080 — 8-разрядного процессора, который был популярен в 70-е годы. На 8080, в свою очередь, в значительной степени повлияли требования совместимости с процессором 8008, построенным на базе процессора 4004 (4-разрядной микросхемы, применявшейся еще в каменном веке).

С точки зрения программного обеспечения компьютеры 8086 и 8088 были 16-разрядными (хотя компьютер 8088 содержал 8-разрядную шину данных). Их последователь, 80286, также был 16-разрядным. Его главным преимуществом был больший объем адресного пространства, хотя очень немногие программы его использовали, поскольку оно состояло из 16 384 64-килобайтных сегментов, а не представляло собой линейную 230-байтную память.
Читать дальше »

Команды

Главная особенность уровня, который мы сейчас рассматриваем, — это набор машинных команд. Они управляют действиями машины. В этом наборе всегда в той или иной форме присутствуют команды LOAD и STORE, предназначенные для перемещения данных между памятью и регистрами, и команда MOVE, которая служит для копирования данных из одного регистра в другой. Также всегда присутствуют арифметические и логические команды, команды сравнения элементов данных и команды переходов в зависимости от результатов.

В этой главе мы обсудим три совершенно разные архитектуры команд: IA-32 компании Intel (она реализована в Pentium 4), Version 9 SPARC (она реализована в процессорах UltraSPARC) и 8051. Мы не преследуем цель дать исчерпывающее описание каждой из этих архитектур. Мы просто хотим продемонстрировать важные аспекты архитектуры команд и показать, как эти аспекты меняются от одной архитектуры к другой. Начнем с машины Pentium 4.

Регистры

Во всех компьютерах имеются несколько регистров, доступных на уровне архитектуры набора команд. Они позволяют контролировать выполнение программы, хранить временные результаты, а также служат для некоторых других целей. Обычно регистры, доступные на уровне микроархитектуры, например TOS и MAR (см. рис. 4.1), на уровне архитектуры набора команд недоступны, однако некоторые регистры, например счетчик команд и указатель стека, доступны на обоих уровнях. В то же время регистры, доступные на уровне архитектуры набора команд, всегда доступны на уровне микроархитектуры, поскольку именно там они реализованы.

Регистры уровня архитектуры набора команд можно разделить на две категории: специальные регистры и регистры общего назначения. К специальным регистрам относятся счетчик команд и указатель стека, а также другие регистры, имеющие особые функции. Регистры общего назначения содержат ключевые локальные переменные и промежуточные результаты вычислений. Их основная функция состоит в том, чтобы обеспечить быстрый доступ к часто используемым данным (обычно без обращений к памяти). RISC-машины с высокоскоростными процессорами и (относительно) медленной памятью обычно содержат как минимум 32 регистра общего назначения, причем в новых процессорах количество регистров общего назначения постоянно растет.
Читать дальше »

 Страница 5 из 7 « 1  2  3  4  5  6  7 »
Архитектура ПК, персонального компьютера, ЭВМ