Организация вычислительных систем и сетей
Классификация компьютеров по областям применения. Персональные компьютеры и рабочие станции. Функциональная и структурная организация процессоров. Системные и локальные шины. Топология локальных сетей. Методы доступа и протоколы передачи данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 28.06.2009 |
Размер файла | 198,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
3.2 Типы системных плат на чипсете 440 LX
Применение набора увеличит быстродействие систем при выполнении целочисленных операций, действий с плавающей запятой и работе с мультимедия-приложеиями.
На данном чипсете комплектуются 3 типа системных плат:
AL 440LX - универсальной системной платы форм-фактора АХ, предназначенной для домашних и корпоративных систем;
NX 440LX - высокоинтегрированной системной платы, созданной для снижения совокупной стоимости владения ПК в корпоративной среде;
DK 440LX - системные платы с двухпроцессорной конфигурацией на основе процессора Pentium II, разработанной для рабочих станций начального уровня и выполнения бизнес-приложений высокого уровня.
4. Функциональная и структурная организация процессоров
4.1 Классификация процессоров (CISC и RISC)
Двумя основными архитектурами набора команд, используемыми компьютерной промышленностью на современном этапе развития вычислительной техники являются архитектуры CISC и RISC. Основоположником CISC-архитектуры можно считать компанию IBM с ее базовой архитектурой /360, ядро которой используется с1964 года и дошло до наших дней, например, в таких современных мейнфреймах как IBM ES/9000.
Лидером в разработке микропроцессоров c полным набором команд (CISC - Complete Instruction Set Computer) считается компания Intel со своей серией x86 и Pentium. Эта архитектура является практическим стандартом для рынка микрокомпьютеров. Для CISC-процессоров характерно: сравнительно небольшое число регистров общего назначения; большое количество машинных команд, некоторые из которых нагружены семантически аналогично операторам высокоуровневых языков программирования и выполняются за много тактов; большое количество методов адресации; большое количество форматов команд различной разрядности; преобладание двухадресного формата команд; наличие команд обработки типа регистр-память.
Основой архитектуры современных рабочих станций и серверов является архитектура компьютера с сокращенным набором команд (RISC - Reduced Instruction Set Computer). Зачатки этой архитектуры уходят своими корнями к компьютерам CDC6600, разработчики которых (Торнтон, Крэй и др.) осознали важность упрощения набора команд для построения быстрых вычислительных машин. Эту традицию упрощения архитектуры С. Крэй с успехом применил при создании широко известной серии суперкомпьютеров компании Cray Research. Однако окончательно понятие RISC в современном его понимании сформировалось на базе трех исследовательских проектов компьютеров: процессора 801 компании IBM, процессора RISC университета Беркли и процессора MIPS Стенфордского университета.
Разработка экспериментального проекта компании IBM началась еще в конце 70-х годов, но его результаты никогда не публиковались и компьютер на его основе в промышленных масштабах не изготавливался. В 1980 году Д.Паттерсон со своими коллегами из Беркли начали свой проект и изготовили две машины, которые получили названия RISC-I и RISC-II. Главными идеями этих машин было отделение медленной памяти от высокоскоростных регистров и использование регистровых окон. В 1981году Дж.Хеннесси со своими коллегами опубликовал описание стенфордской машины MIPS, основным аспектом разработки которой была эффективная реализация конвейерной обработки посредством тщательного планирования компилятором его загрузки.
Эти три машины имели много общего. Все они придерживались архитектуры, отделяющей команды обработки от команд работы с памятью, и делали упор на эффективную конвейерную обработку. Система команд разрабатывалась таким образом, чтобы выполнение любой команды занимало небольшое количество машинных тактов (предпочтительно один машинный такт). Сама логика выполнения команд с целью повышения производительности ориентировалась на аппаратную, а не на микропрограммную реализацию. Чтобы упростить логику декодирования команд использовались команды фиксированной длины и фиксированного формата.
Среди других особенностей RISC-архитектур следует отметить наличие достаточно большого регистрового файла (в типовых RISC-процессорах реализуются 32 или большее число регистров по сравнению с 8 - 16 регистрами в CISC-архитектурах), что позволяет большему объему данных храниться в регистрах на процессорном кристалле большее время и упрощает работу компилятора по распределению регистров под переменные. Для обработки, как правило, используются трехадресные команды, что помимо упрощения дешифрации дает возможность сохранять большее число переменных в регистрах без их последующей перезагрузки.
Ко времени завершения университетских проектов (1983-1984 гг.) обозначился также прорыв в технологии изготовления сверхбольших интегральных схем. Простота архитектуры и ее эффективность, подтвержденная этими проектами, вызвали большой интерес в компьютерной индустрии и с 1986 года началась активная промышленная реализация архитектуры RISC. К настоящему времени эта архитектура прочно занимает лидирующие позиции на мировом компьютерном рынке рабочих станций и серверов.
Развитие архитектуры RISC в значительной степени определялось прогрессом в области создания оптимизирующих компиляторов. Именно современная техника компиляции позволяет эффективно использовать преимущества большего регистрового файла, конвейерной организации и большей скорости выполнения команд. Современные компиляторы используют также преимущества другой оптимизационной техники для повышения производительности, обычно применяемой в процессорах RISC: реализацию задержанных переходов и суперскалярной обработки, позволяющей в один и тот же момент времени выдавать на выполнение несколько команд.
Следует отметить, что в последних разработках компании Intel (имеется в виду Pentium P54C и процессор следующего поколения P6), а также ее последователей-конкурентов (AMD R5, Cyrix M1, NexGen Nx586 и др.) широко используются идеи, реализованные в RISC-микропроцессорах, так что многие различия между CISC и RISC стираются. Однако сложность архитектуры и системы команд x86 остается и является главным фактором, ограничивающим производительность процессоров на ее основе.
4.2 Принципы организации процессоров
4.2.1 Назначение и структура процессора
Процессор -- центральная часть ЭВМ, организующая ее работу по заданной программе. Процессор объединяет в себе АЛУ и ЦУУ, с помощью которых рабочая программа интерпретируется в вычислительный процесс. Структура процессора зависит от принятой в ЭВМ системы счисления, формата данных и команд, системы команд, способов адресации и организации вычислительного процесса и принципа управления им, а также метода контроля и диагностики работы ЭВМ (см. рис. 4.1.).
Арифметическо-логическое устройство (АЛУ) -- совокупность блоков и узлов процессора, обеспечивающая выполнение арифметических и логических операций над операндами. Характер операции задается командой программы.
Центральное устройство управления (ЦУУ) - совокупность блоков и узлов процессора, обеспечивающая координирование работы всех устройств ЭВМ и управление ими для всех принятых в данной ЭВМ режимов работы. Процессор, АЛУ которого содержит один универсальный арифметическо-логический блок (АЛБ) для выполнения всех основных арифметических и логических операций, относят к процессорам универсального типа.
Процессор, АЛУ которого содержит несколько специализированных АЛБ, ориентированных на определенный тип выполняемых команд, относят к процессорам функционального типа.
По способу организации передачи и обработки информации различают процессоры последовательного, параллельного и параллельно-последовательного действия, по организации вычислительного процесса -- на однопрограммные и мультипрограммные.
Процессоры последовательного и параллельно-последовательного действия применяют в тех случаях, когда к их быстродействию не предъявляют жестких требований. Модели процессоров имеют различные возможности для совмещения по времени работы отдельных функциональных блоков. Чем выше уровень совмещения, тем выше быстродействие процессора.
Cache (запас) - обозначает быстродействующую буферную память между процессором и основной памятью (буфер данных, буфер адреса). Кэш служит для частичной компенсации разницы в скорости процессора и основной памяти - туда попадают наиболее часто используемые данные. Когда процессор первый раз обращается к ячейки памяти, ее содержимое параллельно копируется в кэш, и в случае повторного обращения в скором времени может быть с гораздо большей скоростью выбрано из кэша. При записи в память значение попадает в кэш, и либо одновременно копируется в память (схема Write Through - прямая или сквозная запись), либо копируется через некоторое время (схема Write Back - отложенная или обратная запись). При обратной записи, называемой также буферизованной сквозной записью, значение копируется в память в первом же свободном такте, а при отложенной (Delayed Write) - когда для помещения в кэш нового значения не оказывается свободной области; при этом в память вытесняются наименее используемая область кэша. Вторая схема более эффективна, но и более сложна за счет необходимости поддержания соответствия содержимого кэша и основной памяти.
4.2.2 Основные регистры процессоров
Обычно процессоры разделены на две части: операционное устройство (ОУ) и шинный интерфейс (ШИ). Роль ОУ заключается в выполнении команд, в то время как ШИ подготавливает команды и данные для выполнения. ОУ содержит АЛУ и устройство управления УУ и регистры общего назначения. Эти устройства обеспечивают выполнение команд, арифметические вычисления и логические операции.
Три элемента ШИ - блок управления шиной, очередь команд и сегментные регистры - осуществляют три важные функции:
1. ШИ управляет передачей данных на ОУ, в память и на внешние устройства ввода-вывода.
2. Сегментные регистры управляют адресацией памяти.
3. Выборка команд. Все программные команды находятся в памяти, и ШИ должен иметь доступ к ним для выборки их в очередь команд. ШИ должен "заглядывать вперед" и выбирать команды так, чтобы всегда существовала непустая очередь команд, готовых для выполнения.
ОУ и ШИ работают параллельно, причем ШИ опережает ОУ на один шаг. ОУ сообщает ШИ о необходимости доступа к данным в памяти или на устройство ввода-вывода. Кроме того, ОУ запрашивает машинные команды из очереди команд. Пока ОУ занято, ШИ выбирает следующую команду из памяти. Эта выборка происходит во время выполнения, что повышает скорость обработки.
4.2.3 Сегментные регистры
Сегментом называется область, которая начинается на границе параграфа, т.е. по любому адресу, кратному 16. Хотя сегмент может располагаться в любом месте памяти и иметь размер до 64 Кбайт, он требует столько памяти, сколько необходимо для выполнения программы.
Сегмент кодов (CS) содержит машинные команды, которые будут выполняться. Обычно первая выполняемая команда находится в начале этого сегмента и операционная система передает управление по адресу данного сегмента для выполнения программы. Регистр сегмента кодов (CS) адресует данный сегмент.
Сегмент данных (DS) содержит определенные данные, константы и рабочие области, необходимые программе. Регистр сегмента данных (DS) адресует данный сегмент.
Сегмент стека (SS) содержит адреса возврата как для программы при возврате в операционную систему, так и для вызовов подпрограмм при возврате в главную программу. Регистр сегмента стека (SS) адресует данный сегмент.
Еще один сегментный регистр - дополнительный регистр сегмента (ES) - предназначен для специального использования.
Регистры общего назначения
Регистр - совокупность устройств, используемых для хранения информации, и обеспечения быстрого доступа к ней.
Регистр (AX) является основным сумматором и применяется для всех операций ввода-вывода, некоторых операций над строками и некоторых арифметических операций.
Регистр (BX) является базовым регистром. Это единственный регистр общего назначения, который может использоваться в качестве индекса для расширенной адресации.
Регистр (CX) является счетчиком. Он необходим для управления числом повторений циклов и для операций сдвига или вправо. Регистр (CX) используется также для вычислений.
Регистр (DX) является регистром данных. Он применяется для некоторых операций ввода-вывода и тех операций умножения и деления над большими числами.
Регистровые указатели (SP и BP) обеспечивают системе доступ к данным в сегменте стека. Регистр (SP) обеспечивает использование стека в памяти, позволяет временно хранить адреса и иногда данные. Этот регистр связан с регистром (SS) для адресации стека. Регистр (BP) облегчает доступ к параметрам (данным и адресам, переданным через стек).
Индексные регистры (SI и DI) применяются для расширенной адресации и для использования в операциях сложения и вычитания. Регистр (SI) является индексом источника и применяется для некоторых операций над строками. Регистр (DI) является индексом назначения и применяется также для некоторых операций над строками.
Регистр командного указателя (IP) содержит смещение на команду, которая должна быть выполнена.
Флаговый регистр определяет текущее состояние машины и результаты выполнения операций (проверка четности, переполнения, переносов, знака).
При автоматическом выполнении программы процессором команды последовательно поступают из оперативной памяти (ОП) в ЦУУ на время их выполнения АЛУ. Интервал времени, в течение которого процессор выполняет команду, называют рабочим циклом ЭВМ. Величина рабочего цикла зависит от структуры команды, типа операций, структуры операционных блоков АЛУ.
По принципу организации управления вычислительным процессом различают процессоры схемного типа или «жесткой» логикой, с микропрограммным и смешанным (микропрограммно-схемным) управлением.
Схемное управление - управление, при котором для выполнения любой операции последовательность управляющих сигналов задается логическими схемами. Различают центральное, местное и смешанное схемное управление.
В процессорах с центральным управлением длительность рабочего цикла выбирается такой, чтобы за время между двумя управляющими сигналами выполнялась самая длинная операция в процессоре. Такие процессоры получили название синхронных, а блок, в котором формируются управляющие сигналы для всех исполнительных устройств ЭВМ, называют центральным блоком управления (ЦБУ).
В синхронных процессорах при выполнении большинства операций, особенно коротких (например, операция сложения), происходит потеря машинного времени, связанная с непроизводительными простоями процессора. Однако структура процессора отличается простотой, экономичностью и удобна в эксплуатации.
В процессорах с местным управлением вычислительным процессом управление производится так, что каждая операция выполняется после выполнения предыдущей операции. При этом каждое исполнительное устройство после окончания работы формирует сигнал «Конец работы», который одновременно является сигналом «Начало работы» другого исполнительного устройства. Процессоры с переменной длительностью рабочего цикла, величина которого зависит от вида выполняемой операции и кодов операндов, называют асинхронными. В асинхронных процессорах основные исполнительные устройства имеют местные (автономные) блоки управления, что резко повышает быстродействие таких процессоров, так как отсутствуют простои между реальными циклами выполнения команд. Основной недостаток асинхронных процессоров -- их сложность.
В процессорах со смешанным управлением исполнение простейших операций осуществляется в синхронном режиме, а наиболее сложные операции (например, деление, умножение и др.) - в асинхронном. При смешанном управлении процессор содержит как центральный блок, так и местные блоки управления операциями. Смешанный способ управления вычислительным процессом позволяет получить высокое быстродействие процессора при умеренных затратах оборудования, а поэтому наиболее распространен в современных ЭВМ.
Микропрограммное управление основано на замене управляющих логических схем специальной программой, хранящейся в ПЗУ. При таком управлении каждая команда разделяется на ряд элементарных этапов, получивших название микроопераций. Последовательность микрокоманд, выполняющих одну команду (операцию), представляет собой микропрограмму. Для характеристики временных соотношений между различными этапами операции используется понятие машинный такт, определяющий интервал времени, в течение которого выполняется одна или одновременно несколько микроопераций.
Достоинство микропрограммного управления заключается в том, что для изменения вида операций нет необходимости в переделке сложных электронных схем, неизбежной в ЭВМ со схемным управлением, а следует только изменить микропрограмму. Это обстоятельство дает возможность в данной ЭВМ использовать программы, составленные для другой ЭВМ. Благодаря этому микропрограммное управление получило широкое распространение в современных ЭВМ.
4.2.4 Технология MMX
Технология MMX - разработана для ускорения мультимедия и коммуникационных программ. Она включает в себя новые команды и типы данных, что позволяет создавать приложения нового уровня. Технология основана на параллельной обработке данных. При этом сохраняется полная совместимость с существующими операционными системами и программным обеспечением. ММХ-технологии поддерживает новую арифметику, называемую арифметикой с насыщением (Saturation arithmetic).
Наибольший эффект от использования ММХ-технологии может быть достигнут в алгоритмах со следующими характеристиками:
малый размер данных (8-битные графические пикселы, 16-битные звуковые данные);
короткие, часто повторяющиеся циклы;
частые умножения и накопления.
В основе ММХ лежит принцип SIMD (Single Instruction Multiple Data), т.е. одной командой можно обработать сразу несколько единиц информации.
Технология ММХ основана на отображении регистров ММХ на регистры FPU (см. рис. 4.6). Главным образом это сделано для сохранения с существующим программным обеспечением.
Из рис. 4.6. видно, что ММХ-регистры отображены на поля мантиссы в FPU-регистрах. Значение, записываемое в ММХ-регистр, автоматически появляется в младших битах (биты 63-0) соответствующих FPU-регистров. При этом в поле порядка (биты 78-64) и знаковый бит (бит 79) заносятся единицы. Значение поля TOS (Top Of Stack) устанавливается в нуль после выполнения каждой ММХ-команды. Значение мантиссы, записываемое в FPU-регистр с помощью FPU-команды, автоматически появляется в соответствующем ММХ-регистре.
Отображение ММХ-регистров фиксировано и не зависит от значения поля TOS (биты 11-13 в регистре состояния FPU). В обозначении MMn, n - указывает на физический номер регистра, а в STn - n указывает на относительный номер регистра (относительно поля TOS).
При TOS=0: ММ0 отображается на ST0, ММ1 - ST1 и т.д.
При TOS=2: ММ0 отображается на ST6, ММ1 - ST6, ММ2 - ST0 и т.д.
После выполнения любой ММХ-команды (кроме EMMS) значения всех полей регистра тегов устанавливается в 00. Команда EMMS устанавливает значения всех полей регистра тегов 11 (см. табл.4.1.). Значения регистра тегов не оказывает никакого влияния на ММХ-регистры или выполнения ММХ-команд.
Так как ММХ и FPU используют фактически и те же регистры, для сохранения и восстановления контекста ММХ используются команды FSAVE (Store FP state) и FRSTOR (Restore FP state). Если при попытке выполнить ММХ-команду бит TS в регистре CR0 установлен в единицу, то генерируется исключение Int7. Благодаря этому факту обеспечивается прозрачность управления контекстом MMX для операционной системы.
Таблица 4.1
Влияние ММХ-команд на контекст FPU
Тип команды |
Регистр тегов |
Поле TOS |
Другие регистры |
Поле порядка и знаковый бит ММn (79…64) |
Поле мантисы ММn (63…00) |
|
Чтение из ММХ- регистра |
Все поля 00 |
000 |
Не изменяется |
Не изменяется |
Не изменяется |
|
Запись из ММХ- регистра |
Все поля 00 |
000 |
Не изменяется |
Заполняется единицами |
Переписывается |
|
EMMS |
Все поля 11 |
000 |
Не изменяются |
Не изменяется |
Не изменяется |
4.2.5 Принципы конвейерной технологии
Разработчики архитектуры компьютеров издавна прибегали к методам проектирования, известным под общим названием "совмещение операций", при котором аппаратура компьютера в любой момент времени выполняет одновременно более одной базовой операции. Этот общий метод включает два понятия: параллелизм и конвейеризацию. Хотя у них много общего и их зачастую трудно различать на практике, эти термины отражают два совершенно различных подхода. При параллелизме совмещение операций достигается путем воспроизведения в нескольких копиях аппаратной структуры. Высокая производительность достигается за счет одновременной работы всех элементов структур, осуществляющих решение различных частей задачи.
Конвейеризация (или конвейерная обработка) в общем случае основана на разделении подлежащей исполнению функции на более мелкие части, называемые ступенями, и выделении для каждой из них отдельного блока аппаратуры. Так обработку любой машинной команды можно разделить на несколько этапов (несколько ступеней), организовав передачу данных от одного этапа к следующему. При этом конвейерную обработку можно использовать для совмещения этапов выполнения разных команд. Производительность при этом возрастает благодаря тому, что одновременно на различных ступенях конвейера выполняются несколько команд. Конвейерная обработка такого рода широко применяется во всех современных быстродействующих процессорах.
Для иллюстрации основных принципов построения процессоров мы будем использовать простейшую архитектуру, содержащую 32 целочисленных регистра общего назначения (R0,...,R31), 32 регистра плавающей точки (F0,...,F31) и счетчик команд PC. Будем считать, что набор команд нашего процессора включает типичные арифметические и логические операции, операции с плавающей точкой, операции пересылки данных, операции управления потоком команд и системные операции. В арифметических командах используется трехадресный формат, типичный для RISC-процессоров, а для обращения к памяти используются операции загрузки и записи содержимого регистров в память.
Выполнение типичной команды можно разделить на следующие этапы:
1. Выборка команды - IF (по адресу, заданному счетчиком команд, из памяти извлекается команда);
2. Декодирование команды / выборка операндов из регистров - ID;
3. Выполнение операции / вычисление эффективного адреса памяти - EX;
4. Обращение к памяти - MEM;
5. Запоминание результата - WB.
Работу конвейера можно условно представить в виде сдвинутых во времени схем процессора. Этот рисунок хорошо отражает совмещение во времени выполнения различных этапов команд.
Однако чаще для представления работы конвейера используются временные диаграммы, на которых обычно изображаются выполняемые команды, номера тактов и этапы выполнения команд.
Конвейеризация увеличивает пропускную способность процессора (количество команд, завершающихся в единицу времени), но она не сокращает время выполнения отдельной команды. В действительности, она даже несколько увеличивает время выполнения каждой команды из-за накладных расходов, связанных с управлением регистровыми станциями. Однако увеличение пропускной способности означает, что программа будет выполняться быстрее по сравнению с простой неконвейерной схемой.
Тот факт, что время выполнения каждой команды в конвейере не уменьшается, накладывает некоторые ограничения на практическую длину конвейера. Кроме ограничений, связанных с задержкой конвейера, имеются также ограничения, возникающие в результате несбалансированности задержки на каждой его ступени и из-за накладных расходов на конвейеризацию. Частота синхронизации не может быть выше, а, следовательно, такт синхронизации не может быть меньше, чем время, необходимое для работы наиболее медленной ступени конвейера. Накладные расходы на организацию конвейера возникают из-за задержки сигналов в конвейерных регистрах (защелках) и из-за перекосов сигналов синхронизации. Конвейерные регистры к длительности такта добавляют время установки и задержку распространения сигналов. В предельном случае длительность такта можно уменьшить до суммы накладных расходов и перекоса сигналов синхронизации, однако при этом в такте не останется времени для выполнения полезной работы по преобразованию информации.
Конвейеризация эффективна только тогда, когда загрузка конвейера близка к полной, а скорость подачи новых команд и операндов соответствует максимальной производительности конвейера. Если произойдет задержка, то параллельно будет выполняться меньше операций и суммарная производительность снизится. Такие задержки могут возникать в результате возникновения конфликтных ситуаций.
Таблица 4.2.
Диаграмма работы простейшего конвейера
Номер команды |
Номер такта |
|||||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
||
Команда i |
IF |
ID |
EX |
MEM |
WB |
|||||
Команда i+1 |
IF |
ID |
EX |
MEM |
WB |
|||||
Команда i+2 |
IF |
ID |
EX |
MEM |
WB |
|||||
Команда i+3 |
IF |
ID |
EX |
MEM |
WB |
|||||
Команда i+4 |
IF |
ID |
EX |
MEM |
WB |
В качестве примера рассмотрим неконвейерную машину с пятью этапами выполнения операций, которые имеют длительность 50, 50, 60, 50 и 50 нс соответственно. Пусть накладные расходы на организацию конвейерной обработки составляют 5 нс. Тогда среднее время выполнения команды в неконвейерной машине будет равно 260 нс. Если же используется конвейерная организация, длительность такта будет равна длительности самого медленного этапа обработки плюс накладные расходы, т.е. 65 нс. Это время соответствует среднему времени выполнения команды в конвейере. Таким образом, ускорение, полученное в результате конвейеризации, будет равно:
Среднее время выполнения команды в неконвейерном режиме - 260
= 4
Среднее время выполнения команды в конвейерном режиме - 65
Конвейеризация эффективна только тогда, когда загрузка конвейера близка к полной, а скорость подачи новых команд и операндов соответствует максимальной производительности конвейера. Если произойдет задержка, то параллельно будет выполняться меньше операций и суммарная производительность снизится. Такие задержки могут возникать в результате возникновения конфликтных ситуаций.
При реализации конвейерной обработки возникают ситуации, которые препятствуют выполнению очередной команды из потока команд в предназначенном для нее такте. Такие ситуации называются конфликтами. Конфликты снижают реальную производительность конвейера, которая могла бы быть достигнута в идеальном случае. Существуют три класса конфликтов:
1. Структурные конфликты, которые возникают из-за конфликтов по ресурсам, когда аппаратные средства не могут поддерживать все возможные комбинации команд в режиме одновременного выполнения с совмещением.
2. Конфликты по данным, возникающие в случае, когда выполнение одной команды зависит от результата выполнения предыдущей команды.
3. Конфликты по управлению, которые возникают при конвейеризации команд переходов и других команд, которые изменяют значение счетчика команд.
Конфликты в конвейере приводят к необходимости приостановки выполнения команд (pipeline stall). Обычно в простейших конвейерах, если приостанавливается какая-либо команда, то все следующие за ней команды также приостанавливаются. Команды, предшествующие приостановленной, могут продолжать выполняться, но во время приостановки не выбирается ни одна новая команда.
4.3 Микроархитектура процессоров P5
Процессор Pentium своей конвейерной и суперскалярной архитектурой достиг впечатляющего уровня производительности.
Pentium содержит два 5-стадийных конвейера, которые могут работать параллельно и выполнять две целочисленные команды за машинный такт. При этом параллельно может выполняться только пара команд, следующих в программе друг за другом и удовлетворяющих определенным правилам, например, отсутствие регистровых зависимостей типа "запись после чтения".
В Pentium для увеличения пропускной способности осуществлен переход к одному 12-стадийному конвейеру. Увеличение числа стадий приводит к уменьшению выполняемой на каждой стадии работы и, как следствие, к уменьшению времени нахождения команды на каждой стадии на 33 процента по сравнению с другими процессорами. Это означает, что использование при производстве Pentium той же технологии, что и при производстве 100 МГц Pentium, приведет к получению Pentium с тактовой частотой 133 МГц.
Возможности суперскалярной архитектуры Pentium, с ее способностью к выполнению двух команд за такт, было бы трудно превзойти без совершенно нового подхода. Примененный в Pentium новый подход устраняет жесткую зависимость между традиционными фазами "выборки" и "выполнения", когда последовательность прохождения команд через эти две фазы соответствует последовательности команд в программе.
На рис. 4.8 изображена схема процессора процессора Р5, состоящего из 2 конвейеров, U-конвейера и V-конвейера. U-конвейер может выполнять все команды целого типа и команды с плавающей точкой. V-конвейер может выполнять простые целые команды и команды FXCH с плавающей точкой.
Кэш разделен на Кэш-данных и Кэш-команд. Кэш-данных имеет два порта, которые состоят из двух конвейеров. Кеш-данных имеет буфер преобразования таблицы страниц (ТLB) который переводит линейный адрес в физический адрес используемый кешом-данных.
Кеш-команд, буфер переходов и буфер выборки отвечают за получение команд в исполняющем модуле процессора Команды выбираются из кеша-команд или с внешней шины. Адрес перехода запоминается в буфере переходов. TLB кеша команд транслирует линейный адрес в физический используемый кешом команд. Декодер перекодирует выбранные команды так , что процессор мог их выполнять. ROM контроль содержит микрокод с контролем последовательности операций, который может быть эффективен для реализации в архитектурой процессора. Контроль ROM имеет директиву контроля над обоими конвейерами.
Процессор Pentium содержит конвейер плавающей точки, который обеспечивает выполнение существенных эффективных предыдущих вычислений процессора.
4.4 Микроархитектура процессоров семейства Р6
Процессор Pentium представляет coбой довольно простое и весьма ограниченное приближение к суперскалярной архитектуре. Два его конвейера нельзя считать полностью независимыми, поскольку в случае остановки одного из них другой также должен быть остановлен и, таким образом, динамический запуск команд на исполнение (т. е. запуск команд с нарушением последовательности их расположения в программе) не представляется возможным. Более того, блок арифметики с плавающей точкой не является полностью автономным, а связан с конвейерами целочисленных операций. Следовательно, инструкции целочисленной арифметики и арифметики с плавающей точкой не могут исполняться параллельно. Процессоры Р6, напротив, можно смело отнести к ЦП с суперскалярной архитектурой, позволяющей формировать за один машинный такт сразу несколько результатов (естественно, спустя некоторое время, называемое временем старта. Кроме того, эти процессоры отличается повышенной тактовой частотой. На рис. 4.9 приведена блок-схема процессора Pentium Pro.
Разработчики Pentium Pro полностью развязали схемы диспетчеризации потока команд и их исполнения. Инструкции х86 преобразуются в последовательность внутренних микроопераций, по сути не отличающихся от традиционных микрокоманд. Затем эти микрокоманды поступают в буфер изменения порядка с 40 входами, где они хранятся до тех пор, пока не будут «готовы» к обработке необходимые операнды. Из этого буфера инструкции передаются в блок резервирования с 20 входами, где и ожидают, когда освободится необходимое операционное устройство. Подобная структура позволяет исполнять микрооперации с нарушением порядка и загружать одновременно несколько операционных устройств. Ко всему прочему в такой структуре ЦП микрооперации фиксирован ной длины обрабатывать проще, чем сложные команды класса х86, имеющие формат переменной длины.
Увеличение тактовой частоты Pentium Pro достигается за счет глубокой конвейеризации. Поскольку блок резервирования обладает высокой гибкостью, можно считать, что конвейер не имеет фиксированного числа ступеней, но минимальное число тактов, в течение которых может быть вы полнена команда, составляет 12. Такие фазы, как обращение к кэшу и декодирование команды, требуют 2,5 такта каждая.
Для достижения максимальной производительности Pentium Pro разработчики разместили кэш-память второго уровня на отдельном кристалле, который монтируется в один корпус с чипом центрального процессора. Благодаря тому, что соединения между ними не выходят за пределы корпуса (т. е. имеют минимальную протяженность) и выполнены по схеме точка - точка, инженеры компании смогли использовать в интерфейсе типа процессор - кэш нестандартные уровни сигналов и получить высокую пропускную способность тракта. Чип кэша второго уровня выпускается в двух модификациях: емкостью 256 и 512 Кбайт - и обеспечивает передачу 8 байт за такт даже при рабочей частоте процессора 200 МГц.
Для примера рассмотрим микроархитектуру процессора Pentium II. Основная отличительная черта процессоров семейства Р6 -- использование алгоритмов "динамического выполнения команд" (dynamic execution), которые построены на основе трех базовых концепций: предсказании переходов (branch prediction), динамическом анализе потока данных (dynamic data flow analysis) и спекулятивном выполнении инструкций (speculative execution).
Предсказание переходов -- это концепция, которая реализована не только в микроархитектуре процессоров семейства Р6, но и в микроархитектуре ряда других высокопроизводительных процессоров (например, процессоров мэйнфреймов). Суть ее заключается в следующем. На вход процессора поступает поток инструкций для их последующего исполнения. Инструкции поступают в том порядке, в котором они содержатся в коде программы, исполняемой в данный момент процессором. Как только на входе процессора появляется очередная порция инструкций для исполнения, ее содержимое анализируется с целью найти точки ветвления в исполняемом потоке инструкций и предсказать наиболее вероятные пути (ветви), по которым пойдет обработка инструкций после этих точек ветвления. Инструкции, принадлежащие ветвям с наибольшей вероятностью выполнения, тут же ставятся в очередь на исполнение.
Основная идея всех этих манипуляций заключается в том, чтобы заставить процессор выполнить инструкции, которые принадлежат ветвям с наибольшей вероятностью выполнения, "вне очереди" -- то есть не дожидаться того момента, когда очередь на выполнение дойдет до этих ветвей естественным образом (согласно порядку поступления инструкций на вход процессора и, соответственно, контексту выполняемой программы), а загрузить эти ветви на выполнение раньше этого момента. Таким образом обеспечивается более полная загрузка и, соответственно, более высокая производительность процессора.
Конечно, такое преждевременное исполнение инструкций может оправдать себя только в том случае, если алгоритм нахождения наиболее вероятных ветвей работает достаточно хорошо. Действительно, если ветвь угадана неверно, то процессору придется исполнить инструкции, принадлежащие как неверно угаданной, так и альтернативной ветви, проделав тем самым двойную работу. Если бы такая ситуация наблюдалась часто, то использование этой методики было бы невыгодно. Судя по тому, что концепция "предсказания переходов" активно используется производителями процессоров, соответствующая алгоритмика развита достаточно хорошо. В\ процессоре Pentium II за предсказание переходов "отвечает" Fetch/Decode Unit (модуль загрузки/декодирования инструкций).
Динамический анализ потока данных включает в себя выполняемый в режиме реального времени анализ зависимости инструкций от исходных данных и значений регистров процессора, а также определение возможности исполнения и непосредственное исполнение инструкций в порядке, отличном от порядка их первоначальной постановки в очередь на исполнение, (out-of-ordere execution).
Dispatch/Execute Unit (модуль диспетчеризации/исполнения инструкций) процессора Pentium II может одновременно следить за ходом исполнения множества инструкций и выполнять их в таком порядке, который позволяет оптимизировать загрузку вычислительных ресурсов процессора. В это же самое время Dispatch/Execute Unit следит за целостностью данных, над которыми проводятся вычисления.
Выполнение инструкций в порядке, отличном от порядка их постановки в очередь на исполнение (out-of-order execution), позволяет избежать простоя вычислительных ресурсов даже в том случае, когда в L1-кэше нет данных, необходимых для исполнения инструкции, или между инструкциями есть зависимость данных, и зависимая инструкция не может быть исполнена. Например, в результате исполнения инструкции "А" получаются данные, которые используются при исполнении инструкции "В"; соответственно, инструкция "В" не может быть исполнена раньше, чем инструкция "А".
Спекулятивное выполнение инструкций -- это способность процессора исполнить инструкции в порядке, отличном (как правило, с опережением) от порядка во входном потоке инструкций (что определяется кодом исполняемой программы), но завершить и возвратить (commit) результаты исполнения инструкций в порядке, соответствующем оригинальному входному потоку инструкций.
В процессоре Pentium II спекулятивное выполнение инструкций возможно благодаря тому, что этап "диспетчеризации и выполнения инструкций" (dispatching and executing of instructions) отделен от этапа "завершения и возвращения результатов" (commitment of results).
Используя динамический анализ потока данных, Dispatch/Execute Unit процессора исполняет все инструкции, находящиеся в пуле инструкций (instruction pool) и готовые к исполнению, после чего записывает результаты их исполнения во временные регистры.
В это время Retire Unit (модуль завершения и удаления инструкций) последовательно просматривает пул инструкций и ищет исполненные инструкции, которые не имеют зависящих от них других инструкций, следовательно, могут считаться исполненными и готовыми к извлечению из пула инструкций. Найденные инструкции извлекаются из пула инструкций, в том порядке, в каком они поступили в очередь на исполнение, результаты их исполнения возвращаются (commited), записываются в оперативную память и/или в IA-регистры (Intel Architecture registers -- регистры общего назначения процессора) и регистры данных математического сопроцессора (FPU -- floating-point unit)), после чего инструкции удаляются из пула инструкций.
Алгоритмика динамического выполнения команд, включающая предсказание переходов, динамический анализ потока данных и спекулятивное выполнение инструкций, снимает ограничения традиционного "линейного" подхода, при котором весь цикл исполнения состоял из двух этапов -- загрузки и выполнения инструкций, а сами инструкции обрабатывались в том порядке, в котором они поступали в очередь на исполнение.
Процессор Pentium II построен на основе семи базовых модулей-- Fetch/Decode Unit (модуль загрузки/декодирования инструкций), Dispatch/Execute Unit (модуль диспетчеризации/исполнения инструкций), Retire Unit (модуль завершения и удаления инструкций). Instruction Pool (пул инструкций, его также называют Reorder Buffer -- буфер переупорядочивания инструкций). Bus Interface Unit (модуль внешнего интерфейса), LI ICache (L1-кэш для инструкций) и LI DCache (L1-кэш для данных).
Fetch/Decode Unit предназначен для приема входного потока инструкций исполняемой программы, поступающего из L1-кэша инструкций, и их последующего декодирования в поток микроопераций.
Этот модуль работает следующим образом. Прежде всего, блок Next_IP вычисляет индекс (порядковый номер) инструкции, содержащейся в L1-кэше инструкций, которая должна быть обработана следующей -- то есть извлечена из L1-кэша инструкций и передана для последующего декодирования.
Индекс этой инструкции вычисляется блоком Next_IP на основе поступающей в него информации о прерываниях, которые были переданы в процессор для обработки, возможных предсказанных переходах (предсказание выполняется блоком Branch Target Buffer), и сообщениях о неправильно предсказанных переходах (branch-misprediction), которые поступают от целочисленных вычислительных ресурсов, расположенных в модуле Dispatch/Execute Unit. После вычисления индекса следующей обрабатываемой инструкции Li-кэш инструкций извлекает две строки кэшированных данных (cache line) -- ту, которая соответствует вычисленному индексу, и следующую за ней, -- а затем передает для декодирования извлеченные 16 байт, которые содержат IA-инструкции (Intel Architecture). Начало и конец IA-инструкций маркируются.
Далее маркированный поток байт обрабатывается сразу тремя параллельно работающими декодерами, которые отыскивают в нем IA-инструкции. Каждый декодер преобразует найденную IA-инструкцию в набор триадных микроопераций (uops) -- триадных в том смысле, что микрооперация проводится над двумя исходными логическими операндами, а в результате ее выполнения получается только один логический результат. Микрооперация -- это примитивная инструкция, которая может быть выполнена одним из вычислительных ресурсов, расположенных в модуле Dispatch/Execute Unit.
Из трех декодеров два -- простые, которые могут преобразовывать только IA-инструкций, требующие выполнения одной микрооперации, а третий декодер -- более совершенный; он может преобразовывать IA-инструкции, требующие выполнения от одной до четырех микроопераций. Таким образом, за один такт работы процессора все три декодера могут в сумме сгенерировать максимум шесть микроопераций. Для преобразования еще более сложных IA-инструкций используется микрокод, который содержится в блоке Microcode Instruction Sequencer и представляет собой набор предварительно запрограммированных последовательностей обычных микроопераций.
Полученные таким образом микрооперации передаются в блок Register Alias Table Allocate, где все содержащиеся в микрооперациях адреса lA-регистров преобразуются в адреса внутренних физических регистров процессора семейства Р6 -- тем самым IA-архитектура и Рб-архитекура оказываются развязанными. Это существенно увеличивает возможности работы процессора при вычислениях, так как, во-первых, отпадает необходимость следить за целостностью содержимого IA-регистров при исполнении инструкций, во-вторых, адресное пространство перестает быть ограниченным возможностями IA-архитектуры и может быть значительно расширено, что приводит к росту скорости вычислений, и, в-третьих, такая переадресация обеспечивает возможность спекулятивного исполнения инструкций -- далее все вычисления ведутся во внутренней Р6-архитектуре процессора, а IA-архитектура снова появляется "на сцене" только на этапе завершения инструкций в модуле Retire Unit.
На этом же этапе к каждой микрооперации как информационной единице добавляются флаги состояния, в которые записывается информация об ее статусе. После этого микрооперации передаются в пул инструкций.
Instruction Pool (Reorder Buffer). Основное назначение этого модуля -- предоставить возможность исполнения микроопераций в произвольном порядке; в том числе, отличном от порядка их генерации.
В тот момент, когда микрооперации попадают в пул инструкций, порядок их следования в потоке соответствует тому порядку, в котором они были сгенерированы в результате декодирования IA-инструкций, поступивших на вход модуля Fetch/Decode Unit, -- никакого изменения порядка следования пока не произошло. Пул инструкций представляет собой последовательный массив инструкций; при этом любая из этих инструкций может быть в любой момент времени обработана модулем Dispatch/Execute Unit или Retire Unit -- то есть порядок обработки инструкций может быть произвольным и не зависит от первоначального порядка, в котором инструкции поступили в пул. Именно поэтому пул инструкций иногда называют еще буфером переупорядочивания инструкций (Reorder Buffer).
Dispatch/Execute Unit. Этот модуль проверяет состояние микроопераций, содержащихся в пуле инструкций, исполняет их, если есть такая возможность, и записывает полученные результаты обратно в пул инструкций.
Reservation Station -- основной управляющий блок модуля Dispatch/Execute Unit. Именно он планирует порядок исполнения и занимается диспетчеризацией (распределением между вычислительными ресурсами) микроопераций. Этот блок последовательно просматривает пул инструкций в поисках микроопераций, которые готовы к исполнению -- таковыми считаются микрооперации, у которых готовы (т.е. вычислены/загружены) исходные операнды, -- и передает (распределяет, диспетчеризует) их на исполнение свободным вычислительными ресурсам, которые могут исполнить микрооперацию. Результаты исполнения микрооперации записываются в пул инструкций и хранятся там вместе с самой микрооперацией до тех пор, пока последняя не будет завершена -- этим занимается уже модуль Retire Unit.
Следует подчеркнуть, что жесткого, заранее предопределенного порядка исполнения микроопераций не существует -- они исполняются сразу же, как только бывают готовы их операнды и свободен соответствующий вычислительный ресурс. В том случае, если одному и тому же ресурсу может быть одновременно передано на исполнение более одной микрооперации, последние исполняются по принципу псевдо-FIFO (First In First Out) -- первой исполняется та микрооперация, которая раньше попала в пул инструкций.
Reservation Station имеет пять портов, через которые организуется обмен данными с пятью вычислительными ресурсами. Поэтому Dispatch/Execute Unit может за один такт исполнить максимум пять микроопераций. Однако при реальной работе с постоянной равномерной нагрузкой на процессор наиболее типична ситуация, когда за один такт исполняется три микрооперации.
Retire Unit -- модуль, который знает как и когда завершить (commit) временные внутренние спекулятивные вычисления, выполненные в Р6-архитектуре, преобразовать их и вернуть окончательный результат в IA-архитектуре.
Retire Unit постоянно сканирует содержимое пула инструкций и проверяет статус хранящихся в нем микроопераций. Как только находится исполненная и готовая к удалению из пула микрооперация. Retire Unit преобразует результаты ее исполнения, хранящиеся во внутреннем представлении процессора (то есть во внутренних регистрах, в контексте Р6-архитектуры), к представлению в IA-архитектуре и записывает результат исполнения в оперативную память и/или в IA-регистры. После этого микрооперация удаляется из пула инструкций.
Тонкость этой процедуры заключается в том, что результаты исполнения микроопераций должны быть возвращены в контексте IA-архитектуры в том же порядке, в каком эти микрооперации были сгенерированы в модуле Fetch/Decode Unit при декодировании входного потока инструкций исполняемой программы.
Ситуация усложняется еще тем, что все это происходит на фоне непрекращающегося потока всевозможных прерываний, точек останова, ошибок предсказания переходов, а также внештатных ситуаций в работе процессора, которые нужно успевать обрабатывать.
Retire Unit процессора Pentium II способен завершить и удалить до трех микроопераций за один такт работы процессора.
Bus Interface Unit. Этот модуль отвечает за обмен данными между Ll-кэшом инструкций, L1-кэшом данных, системной шиной и L2-кэшом.
При чтении из памяти должны быть заданы адрес памяти, размер блока считываемых данных и регистр-назначение. Команда чтения кодируется одной микрокомандой.
При записи надо задать адрес памяти, размер блока записываемых данных и сами данные. Поэтому команда записи кодируется двумя микрокомандами: первая генерирует адрес, вторая готовит данные. Эти микрокоманды планируются независимо и могут выполняться параллельно; они могут переупорядочиваться в буфере записи.
Запись в память никогда не выполняется опережающим образом, так как нет эффективного способа организации отката в случае неверного предсказания. Разные команды записи никогда не переупорядочиваются друг относительно друга. Буфер записи инициирует запись, только когда сформированы и адрес, и данные, и нет ожидающих выполнения более ранних команд записи.
При изучении вопроса о возможности и целесообразности переупорядочения доступа к памяти инженеры "Intel" пришли к следующим выводам.
Команда записи не должна обгонять идущую впереди команду записи, так как это может лишь незначительно увеличить производительность.
Можно запретить командам записи обгонять команды чтения из памяти, так как это приведет лишь к незначительной потере производительности.
Запрет командам чтения обгонять другие команды чтения или команды записи может повлечь существенные потери в производительности.
Поэтому была реализована архитектура подсистемы памяти, позволяющая командам чтения опережать команды записи и другие команды чтения.
Буфер упорядочения памяти служит в качестве распределительной станции и буфера переупорядочивания. В нем хранятся отложенные команды чтения и записи, и он осуществляет их повторное диспетчирование, когда блокирующее условие (зависимость по данным или недоступность ресурсов) исчезает.
4.5 Микроархитектура процессоров семейства AMD
В процессоре AMD-K6-2 реализована так называемая "Enhanced RISC86"-микроархитектура. Напомним, что RISC -- это аббревиатура от Reduced Instruction Set Computing ("вычисления с сокращенным набором команд"). RISC-процессор обладает меньшим числом команд фиксированной длины. Упрощенная структура позволяет RISC-процессору развивать более высокую скорость. Типичные представители RISC-процессоров -- Alpha от DEC, SPARC от SUN, PowerPC от IBM.
В противоположность этому CISC -- сокращение от Complex Instruction Set Computing ("вычисления со сложным набором команд"). Все члены семейства х86 -- типичные представители CISC-процессоров со cложными, но удобными наборами команд. Что касается AMD-K6-2, то речь в данном случае идет об объединенной архитектуре на основе преобразования х86-команд в более простые в обращении RISC-инструкции,
Подобные документы
Особенности, отличия, топология и функционирование локальных компьютерных сетей. Программное обеспечение информационно-вычислительных сетей. Основные протоколы передачи данных, их установка и настройка. Аутентификация и авторизация; система Kerberos.
курсовая работа [67,7 K], добавлен 20.07.2015Классификация вычислительных сетей. Функции локальных вычислительных сетей: распределение данных, информационных и технических ресурсов, программ, обмен сообщениями по электронной почте. Построение сети, адресация и маршрутизаторы, топология сетей.
доклад [23,2 K], добавлен 09.11.2009Классификация вычислительных сетей. Основные причины широкого распространения локальных вычислительных сетей. Топология вычислительной сети. Обоснование дифференциального и интегрального исчисления. Характеристика основных правил дифференцирования.
контрольная работа [292,0 K], добавлен 21.12.2010Понятие и назначение локальных вычислительных сетей (ЛВС), их классификация. Топология сетей: "звезда", "кольцо", "общая шина", "дерево", их достоинства и недостатки. Устройства межсетевого интерфейса и их назначение: мосты, маршрутизаторы, шлюзы.
реферат [112,1 K], добавлен 23.12.2008Топология компьютерных сетей. Методы доступа к несущей в компьютерных сетях. Среды передачи данных, их характеристики. Структурная модель OSI, её уровни. Протокол IP, принципы маршрутизации пакетов. Физическая топология сети. Определение класса подсети.
контрольная работа [101,8 K], добавлен 14.01.2011Компьютерные сети и их классификация. Аппаратные средства компьютерных сетей и топологии локальных сетей. Технологии и протоколы вычислительных сетей. Адресация компьютеров в сети и основные сетевые протоколы. Достоинства использования сетевых технологий.
курсовая работа [108,9 K], добавлен 22.04.2012Назначение локальных сетей как комплекса оборудования и программного обеспечения, их технические средства, топология. Организация передачи данных в сети. История развития глобальных сетей, появление Интернета. Программно-техническая организация Интернета.
реферат [40,8 K], добавлен 22.06.2014Эволюция вычислительных систем. Базовые понятия и основные характеристики сетей передачи информации. Задачи, виды и топология локальных компьютерных сетей. Модель взаимодействия открытых систем. Средства обеспечения защиты данных. Адресация в IP-сетях.
лекция [349,0 K], добавлен 29.07.2012Архитектура персональных компьютеров, классификация сетей (глобальные, региональные, локальные), методы доступа к передаче данных и протоколы. Динамические структуры данных; списки, их основные виды и способы реализации; технологии программирования.
шпаргалка [584,9 K], добавлен 09.03.2010Общие принципы построения вычислительных сетей, их иерархия, архитектура. Каналы связи и коммуникационное оборудование. Эталонная модель взаимодействия открытых систем OSI. Организация локальных и корпоративных сетей, топология и технические средства.
реферат [569,4 K], добавлен 05.02.2009