Микроархитектура Р6
структиве с ним), имеет значительно б ольший размер (256 Кбайт, 512 Кбайт или 1 Мбайт) и соединена с ядром процессора посредством 64-разрядной шины. Раз- деление кэш-памяти на две части (для кода и данных) обеспечивает бесперебой- ную поставку машинных инструкций и элементов данных в исполнительное устрой- ство процессора. Исходные данные для кэш-памяти первого уровня предоставляет кэш-память второго уровня. Заметьте, что информация из нее поступает на уст- ройство шинного интерфейса и далее в соответствующую кэш-память первого уровня по 64-разрядной шине. При этом благодаря более быстрому обновлению содержимого кэш-памяти первого уровня обеспечивается высокий темп работы процессора. Устройство шинного интерфейса обращается к оперативной памяти системы через внешнюю системную шину.
Эта 64-разрядная шина ориентирована на обра- ботку запросов, то есть каждый шинный запрос обрабатывается отдельно и требу- ет обратной реакции. Пока устройство шинного интерфейса ожидает ответа на один запрос шины, возможно формирование многочисленных дополнительных запро- сов. Все они обслуживаются в порядке поступления. Считываемые по запросу дан- ные помещаются в кэш второго уровня. То есть процессор посредством устройства шинного интерфейса читает команды и данные из кэша второго уровня. Устройство шинного интерфейса взаимодействует с кэшем второго уровня через 64-разряд- ную шину кэша, которая также ориентирована на обработку запросов и функцио- нирует на тактовой частоте процессора. Доступ к кэшу первого уровня осуществ- ляется через внутренние шины на тактовой частоте процессора. Синхронная работа с системной памятью кэш-памяти обоих уровней осуществляется благодаря спе- циальному протоколу МЕSI [7], [13]. Запросы от команд на получение операндов из памяти в исполнительном устрой- стве процессора обслуживаются посредством устройства связи с памятъю и бу- фера переупорядочивания запросов к памяти. Эти два устройства специально вклю- чены в схему для того, чтобы обеспечить бесперебойное снабжение исполняемых команд необходимыми данными. Особо стоит подчеркнуть роль буфера переупо- рядочивания запросов к памяти. Он отслеживает все запросы к операндам в памя- ти и выполняет функции планирующего устройства. Если нужные для очередной операции данные в кэш-памяти первого уровня (L1) отсутствуют, то буфер пере- упорядочивания запросов к памяти автоматически передает информацию о неудач- ном обращении к данным кэшу второго уровня (L2). Если и в кэше L2 нужных данных не оказалось, то буфер переупорядочивания запросов к памяти заставляет устройство шинного интерфейса сформировать запрос к оперативной памяти компь- ютера. Устройство выборки/декодирования извлекает одну 32-бaйтнyю строку кэша команд ( L1) за такт и передает в декодер, который преобразует ее в последователь- ность микроопераций. Поток микроопераций (пока он еще соответствует после- довательности исходных команд) поступает в буфер команд. Устройство выборки команд вычисляет указатель на следующую команду, подлежащую выборке, на основании информации трех источников: буфера меток перехода, состояния пре- рывания/исключения и сообщения от исполнительного целочисленного устрой- ства об ошибке в предсказании метки перехода. Важная часть этого процесса — предсказание метки перехода, которое выполняется по специальному алгоритму. В его основе лежит работа с буфером меток перехода, который содержит информа- цию о последних 256 переходах. Если очередная команда, выбираемая из памяти, является командой перехода, то содержащийся в ней адрес перехода сравнивается с адресами, уже находящимися в буфере меток перехода. Если этот адрес уже есть в буфере меток переходов, то он станет адресом следующей команды, с которой устройство выборки будет извлекать очередную команду. Если искомого адреса перехода в буфере нет, то выборка команд из памяти будет продолжена до момен- та исполнения команды перехода исполнительным устройством. В результате ее исполнения становится ясно, было ли правильным решение об адресе начала вы- борки следующих команд после выборки команды перехода. Если предсказанный переход оказывается неверным, то конвейер сбрасывается и загружается заново в соответствии с адресом перехода. Цель предсказания переходов — в том, чтобы устройство исполнения постоянно было занято полезной работой и сброс конвей- ера производился как можно реже. Устройство выборки команд выбирает команды для исполнения и помещает их в устройство декодирования. Устройство декодирования состоит из трех па- раллельно работающих декодеров (два простых и один сложный). Именно эти де- кодеры воплощают в жизнь понятие исполнения с нарушением исходного поряд- ка следования команд (out of order) и являются теми самыми тремя входами (three way) в исполнительное устройство процессора. Декодеры преобразуют команды процессора в микрооперации. Микрооперации представляют собой примитивные команды, которые выполняются пятью исполнительными устройствами процес- сора, работающими параллельно. Многие машинные команды преобразуются в одиночные микрооперации (это делает простой декодер), а некоторые машин- ные команды — в последовательность от двух и более (оптимально — четырех) мик- роопераций (это делает сложный декодер). Информация о последовательности мик- роопераций для реализации конкретной машинной команды содержится в устройстве микропрограммного управления. Кроме команд, декодеры обрабатывают также пре- фиксы команд. Декодер команд может формировать до шести микроопераций за такт — по одной от простых декодеров и до четырех от сложного декодера. Для достижения наибольшей производительности работы декодеров необходимо, что- бы на их вход поступали команды, которые декодируются шестью микроопераци- ями в последовательности 4 + 1 + 1. Если время работы программы критично, то имеет смысл провести ее оптимизацию, заключающуюся в переупорядочивании исходного набора команд таким образом, чтобы группы команд формировали пос- ледовательности микроопераций по схеме 4 + 1 + 1. После того как команды раз- биты на микрооперации, порядок их выполнения трудно предсказать. При этом могут возникнуть проблемы с таким критичным ресурсом, как регистры. Суть здесь в том, что если в двух соседних фрагментах программы данные помещались в оди- наковые регистры, откуда они, возможно, записывались в некоторые области па- мяти, а после переупорядочивания эти фрагменты перемешались, то как разоб- раться в том, какие регистры и где использовались. Эта проблема носит название проблемы ложных взаимозависимостей и решается с помощью механизма переиме- нования регистров. Основу этого механизма составляет набор из 40 внутренних универсальных регистров, которые и задействуются в реальных вычислениях ис- полнительным устройством абсолютно прозрачно для программ. Универсальные регистры могут работать как с целыми числами, так и со значениями с плавающей точкой. Информация о действительных именах регистров процессора и их внут- ренних именах (номерах универсальных регистров) помещается в таблицу псев- донимов регистров. В заключение процесса декодирования устройство управления таблицей псев- донимов регистров добавляет к микрооперациям биты состояния и флаги, чтобы подготовить их к неупорядоченному выполнению, после чего посылает получив- шиеся микрооперации в буфер переупорядоченных команд. Нужно заметить, что новый порядок их следования не соответствует порядку следования соответству- ющих команд в исходной программе. Буфер переупорядоченных команд представ- ляет собой массив ассоциативной памяти, физически выполненный в гаде 40 регис- тров и представляющий собой кольцевую структуру, элементы которой содержат два типа микроопераций: ожидающие своей очереди на исполнение и уже частич- но выполненные, но не до конца из-за их переупорядочивания и зависимости от других частично или полностью не выполненных микроопераций. Устройство дис- петчеризации/исполнения может выбирать микрооперации из этого буфера в лю- бом порядке. Устройство диспетчеризации/исполнения планирует и исполняет неупорядо- ченную последовательность микроопераций из буфера переупорядоченных команд. Но оно не занимается непосредственной выборкой микроопераций из буфера пе- реупорядоченных команд, так как в нем могут содержаться и не готовые к испол- нению микрооперации. Этим занимается устройство, управляющее специальным буфером, который условно назовем буфером микроопераций, готовых к исполне- нию. Оно постоянно сканирует буфер переупорядоченных команд в поисках мик- роопераций, готовых к исполнению (фактически это означает доступность всех операндов), после чего посылает их соответствующим исполнительным устрой- ствам, если они не заняты. Результаты исполнения микроопераций возвращаются в буфер переупорядоченных команд и сохраняются там наряду с другими микро- операциями до тех пор, пока не будут удалены устройством удаления и восстанов- ления. Подобная схема планирования и исполнения программ реализует классичес- кий принцип неупорядоченного выполнения, при котором микрооперации посы- лаются исполнительным устройствам вне зависимости от их расположения в ис- ходном алгоритме. В случае, если к выполнению одновременно готовы две или более микрооперации одного типа (например, целочисленные), то они выполня- ются в соответствии с принципом FIFO (First In, First Out — первым пришел, пер- вым ушел), то есть в порядке поступления в буфер переупорядоченных команд. Непосредственно исполнительное устройство состоит из пяти блоков, каждый из которых обрабатывает свой тип микроопераций: два целочисленных устрой- ства, два устройства для вычислений с плавающей точкой и одно устройство связи с памятью. Таким образом, за один машинный такт одновременно исполняется пять микроопераций. Два целочисленных исполнительных устройства могут параллельно обрабаты- вать две целочисленные микрооперации. Одно из этих целочисленных исполни- тельных устройств специально предназначено для работы с микрооперациями пе- реходов. Оно способно обнаружить непредсказанный переход и сообщить об этом устройству выборки команд, чтобы перезапустить конвейер. Такая операция реа- лизована следующим образом. Декодер команд отмечает каждую микрооперацию перехода и адрес перехода. Когда целочисленное исполнительное устройство вы- полняет микрооперацию перехода, то оно определяет, был предсказан переход или нет. Если переход предсказан правильно, то микрооперация отмечается пригод- ной для использования, и выполнение продолжается по предсказанной ветви. Если переход предсказан неправильно, то целочисленное исполнительное устройство изменяет состояние всех последующих микроопераций с тем, чтобы удалить их из буфера переупорядоченных команд. После этого целочисленное устройство поме- щает метку перехода в буфер меток перехода, который, в свою очередь, совместно с устройством выборки команд перезапускает конвейер относительно нового ис- полнительного адреса. Устройство связи с памятью управляет загрузкой и сохранением данных для микроопераций. Для их загрузки в исполнительное устройство достаточно опре- делить только адрес памяти, поэтому такое действие кодируется одной микроопе- рацией. Для сохранения данных необходимо определять и адрес, и записываемые данные, поэтому это действие кодируется двумя микрооперациями. Та часть уст- ройства связи с памятью, которая управляет сохранением данных, имеет два бло- ка, позволяющие ему обрабатывать адрес и данные для микрооперации параллель- но. Это позволяет устройству связи с памятью выполнить загрузку и сохранение данных для микроопераций параллельно в одном такте. Исполнительные устройства с плавающей точкой аналогичны устройствам в бо- лее ранних моделях процессора Pentium. Было добавлено только несколько новых команд с плавающей точкой для организации условных переходов и перемеще- ний. Последний блок в этой схеме выполнения команд исходной программы — блок удаления и восстановления, задачей которого является возврат вычислительного процесса в рамки, определенные исходной последовательностью команд. Для это- го он постоянно сканирует буфер переупорядоченных команд на предмет обнару- жения полностью выполненных микроопераций, не имеющих связи с другими микрооперациями. Такие микрооперации удаляются из буфера переупорядочен- ных команд и восстанавливаются в порядке, соответствующем порядку следования команд исходной программы с учетом прерываний, исключений, точек прерыва- ния и переходов. Блок удаления и восстановления может удалить три микроопе- рации за один машинный такт. При восстановлении порядка следования команд блок удаления и восстановления записывает результаты в реальные регистры про- цессора и в оперативную память. Таким образом, система динамического исполнения команд позволяет органи- зовать прохождение команд программы через исполнительное устройство процес- сора эффективнее, чем это было в конвейере процессора i8О486 и первых процес- соров Pentium. ■Еще по теме Микроархитектура Р6:
- Л.О. Доліненко, В.О. Доліненко, С.О. Сарновська. Цивільне право України, 2006
- ЦИВІЛЬНЕ ПРАВО УКРАЇНИ
- ПЕРЕДМОВА
- Частина І ПРОГРАМА КУРСУ «ЦИВІЛЬНЕ ПРАВО УКРАЇНИ»
- Розділ І. Загальні положення цивільного права
- Тема 1. Поняття цивільного права. Предмет та метод, система цивільного права. Функції та принципи цивільного права
- Тема 2. Цивільне законодавство України
- Тема 3. Поняття, елементи та види цивільних правовідносин
- Тема 4. Здійснення цивільних прав і виконання обов’язків
- Тема 5. Захист цивільних прав та інтересів