Шпоры (1 Многоуровневая компьютерная организация)

Шпоры и тесты по предмету «Программирование»
Информация о работе
  • Тема: Шпоры (1 Многоуровневая компьютерная организация)
  • Количество скачиваний: 4
  • Тип: Шпоры и тесты
  • Предмет: Программирование
  • Количество страниц: 37
  • Язык работы: Русский язык
  • Дата загрузки: 2014-06-06 00:40:53
  • Размер файла: 1617.16 кб
Помогла работа? Поделись ссылкой
Ссылка на страницу (выберите нужный вариант)
  • Шпоры (1 Многоуровневая компьютерная организация) [Электронный ресурс]. – URL: https://www.sesiya.ru/shpory-i-testy/programmirovanie/shpory-1-mnogourovnevaya-kompyuternaya-organizaciya/ (дата обращения: 15.05.2021).
  • Шпоры (1 Многоуровневая компьютерная организация) // https://www.sesiya.ru/shpory-i-testy/programmirovanie/shpory-1-mnogourovnevaya-kompyuternaya-organizaciya/.
Есть ненужная работа?

Добавь её на сайт, помоги студентам и школьникам выполнять работы самостоятельно

добавить работу
Обратиться за помощью в подготовке работы

Заполнение формы не обязывает Вас к заказу

Информация о документе

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

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

1 Многоуровневая компьютерная организация
Для эффективной работы человека с компьютером необходимо разработать какой-либо язык, на котором человеку было удобно задавать команды для выполнения компьютеру.
Новые команды в совокупности формируют язык, который обозначим как Я1. Встроенные машинные команды тоже формируют язык, котороый обозначим как Я0.
Компьютер может выполнять только программы, написанные на его машинном языке Я0. Два способа решения проблемы различаются тем, каким образом компьютер будет выполнять программы, написанные на языке Я1, так как компьютеру доступен только машинный язык Я0.
Трансляция
Первый способ выполнения программы, написанной на языке Я 1, подразумевает замену каждой команды эквивалентным набором команд на языке Я 0. В этом случае компьютер выполняет новую программу, написанную на языке Я 0, вместо старой программы, написанной на Я 1.
Интерпретация
Второй способ означает создание программы на языке Я0, получающей в качестве входных данных программы, написанные на языке Я1. При этом каждая команда языка Я1 обрабатывается поочередно, после чего сразу выполняется эквивалентный ей набор команд языка Я0. Эта технология не требует составления новой программы на Я0. Программа, которая осуществляет интерпретацию, называется интерпретатором.
Общее:
- В обоих подходах компьютер в конечном итоге выполняет набор команд на языке Я0, эквивалентных командам Я1.
Различие:
- При трансляции вся программа Я1 переделывается в программу Я0, программа Я1 отбрасывается, а новая программа на Я0 загружается в память компьютера и затем выполняется.
- При интерпретации каждая команда программы на Я 1 перекодируется в Я 0 и сразу же выполняется. В отличие от трансляции, здесь не создается новая программа на Я 0, а происходит последовательная перекодировка и выполнение команд. С точки зрения интерпретатора, программа на Я 1 есть не что иное, как «сырые» входные данные.
Оба подхода широко используются как вместе, так и по отдельности.
Построим гипотетический компьютера или виртуальную машину, для которой машинным языком является язык Я1. Назовем такую виртуальную машину М1, а виртуальную машину для работы с языком Я0 — М0. Если бы такую машину М1 можно было бы сконструировать без больших денежных затрат, язык Я0, да и машина, которая выполняет программы на языке Я0, были бы не нужны. Можно было бы просто писать программы на языке Я1, а компьютер сразу бы их выполнял.
Трансляция и интерпретация целесообразны лишь в том случае, если языки Я0 и Я1 не слишком отличаются друг от друга. Это значит, что язык Я1 хотя и лучше, чем Я 0, но все же далек от идеала.
Решение проблемы — создание еще одного набора команд, которые в большей степени, чем Я 1 ориентированы на человека и в меньшей степени на компьютер. Этот третий набор команд также формирует язык, который обозначим как Я 2, а соответствующую виртуальную машину - М2.
Человек может писать программы на языке Я 2, как будто виртуальная машина для работы с машинным языком Я 2 действительно существует. Такие программы могут либо транслироваться на язык Я 1, либо выполняться интерпретатором, написанным на языке Я 1.
Изобретение целого ряда языков, каждый из которых более удобен для человека, чем предыдущий, может продолжаться до тех пор, пока не будет получен подходящий язык. Каждый такой язык использует своего предшественника как основу, поэтому можно рассматривать компьютер в виде ряда уровней.
Язык, находящийся в самом низу иерархической структуры, — самый примитивный, а тот, что расположен на ее вершине — самый сложный.


2 Современные многоуровневые машины
Большинство современных компьютеров состоит из двух и более уровней. Существуют машины даже с шестью уровнями . Ур 0 - это аппаратное обеспечение машины. Электронные схемы на ур 1 выполняют машинно-зависимые программы. Также есть ур, который расположен ниже нулевого - уровень физических устройств. На этом уровне находятся транзисторы, которые для разработчиков компьютеров являются примитивами. Объяснить, как работают транзисторы, - задача физики.
На самом нижнем уровне (0) - цифровом логическом уровне, объекты называются вентилями. Хотя вентили состоят из аналоговых компонентов, таких как транзисторы, они могут быть точно смоделированы как цифровые устройства. У каждого вентиля есть один или несколько цифровых вход)с1 (сигналов, представляющих 0 или 1). Вентиль вычисляет простые функции этих сигналов, такие как И или ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1 бит памяти, который может содержать 0 или 1. Биты памяти, объединенные в группы, например, по 16, 32 или 64, формируют регистры. Каждый регистр может содержать одно двоичное число до определенного предела. Из вентилей также может состоять сам компьютер.
Следующий уровень(1) называется уровнем микроархитектуры. На этом уровне находятся совокупности 8 или 32 регистров, которые формируют локальную память и схему, называемую АЛУ (арифметико-логическое устройство). АЛУ выполняет простые арифметические операции. Регистры вместе с АЛУ формируют тракт данных, по которому поступают данные. Тракт данных работает следующим образом. Выбирается один или два регистра, АЛУ производит над ними какую-либо операцию, например сложения, после чего результат вновь помещается в один из этих регистров.
На некоторых машинах работа тракта данных контролируется особой программой, которая называется микропрограммой. На других машинах тракт данных контролируется аппаратными средствами.
На машинах, где тракт данных контролируется программным обеспечением, микропрограмма - это интерпретатор для команд на уровне 2. Микропрограмма вызывает команды из памяти и выполняет их одну за другой, используя при этом тракт данных. Например, при выполнении команды ADD она вызывается из памяти, ее операнды помещаются в регистры, АЛУ вычисляет сумму, а затем результат переправляется обратно. На компьютере с аппаратным контролем тракта данных происходит такая же процедура, но при этом нет программы, интерпретирующей команды уровня 2.
Уровень 2 - набор команд.
Следующий уровень(3) обычно является гибридным. Большинство команд в его языке есть также и на уровне архитектуры набора команд (команды, имеющиеся на одном из уровней, вполне могут быть представлены и на других уровнях). У этого уровня есть некоторые дополнительные особенности: новый набор команд, другая организация памяти, способность выполнять две и более программы одновременно и некоторые другие. При построении уровня 3 возможно больше вариантов, чем при построении уровней 1 и 2.
Новые средства, появившиеся на уровне 3, выполняются интерпретатором, который работает на втором уровне. Этот интерпретатор был когда-то назван операционной системой. Команды уровня 3, идентичные командам уровня 2, выполняются микропрограммой или аппаратным обеспечением, но не операционной системой.
Между уровнями 3 и 4 есть существенная разница. Нижние три уровня задуманы не для того, чтобы с ними работал обычный программист. Уровни с четвертого и выше предназначены для прикладных программистов, решающих конкретные задачи. Еще одно изменение на уровне 4, - механизм поддержки более высоких уровней. Уровни 2 и 3 обычно интерпретируются, а уровни 4, 5 и выше обычно транслируются.
Другое различие между уровнями 1, 2, 3 и уровнями 4, 5 и выше - особенность языка. Машинные языки уровней 1, 2 и 3 - цифровые. Программы, написанные на этих языках, состоят из длинных рядов цифр, которые воспринимаются компьютерами, но малопонятны для людей. Начиная с уровня 4, языки
Уровень 5 обычно состоит из языков, разработанных для прикладных программистов( языки высокого уровня - С, С++, Java, LISP и Prolog).
Таким образом, компьютер проектируется как иерархическая структура уровней, которые надстраиваются друг над другом. Каждый уровень представляет собой определенную абстракцию различных объектов и операций.
Набор типов данных, операций и характеристик каждого отдельно взятого уровня называется архитектурой. Архитектура связана с программными аспектами.

3 Развитее компьютерной архитектуры
Программы, написанные на машинном языке (уровень 1), могут сразу без применения интерпретаторов и трансляторов выполняться электронными схемами компьютера (уровень 0). - формируют аппаратное обеспечение, которое состоит из осязаемых объектов - интегральных схем, печатных плат, кабелей, источников электропитания, модулей памяти и принтеров.
Программное обеспечение - из алгоритмов и их компьютерных представлений, то есть программ. Программы могут храниться на жестком диске, гибком диске, компакт-диске или других носителях. в сущности, программное обеспечение - это набор команд, составляющих программы, а не физические носители.
В первых компьютерах граница между аппаратным и программным обеспечением была очевидна. Произошло значительное размывание этой границы. В настоящее время очень сложно отделить их друг от друга.
Изобретение микропрограммирования
У первых цифровых компьютеров в 40-х годах было только два уровня: уровень архитектуры набора команд, на котором осуществлялось программирование, и цифровой логический уровень, выполнявший программы. Схемы цифрового логического уровня были ненадежны, сложны для производства и понимания.
В 1951 году Морис предложил разработку трехуровневого компьютера. Эта машина должна была иметь встроенный неизменяемый интерпретатор (микропрограмму), -выполнении программ уровня ISA посредством интерпретации. Так как аппаратное обеспечение должно было теперь вместо программ уровня ISA выполнять только микропрограммы с ограниченным набором команд, требовалось меньшее количество электронных схем.
В 50-е годы было построено несколько трехуровневых машин. В 60-х годах число таких машин значительно увеличилось. К 70-м годам идея о том, что написанная программа сначала должна интерпретироваться микропрограммой, а не выполняться непосредственно электроникой - преобладающей.
Изобретение операционной системы
Раньше если программист хотел запустить программу на языке FORTRAN, ему необходимо:
1. Он брал большую зеленую стопку перфокарт "Компилятор FORTRAN", помещал их в считывающее устройство и "Пуск".
2. Программа считывалась.
3. Затем считывал свою программу во второй раз.
4. трансляция завершалась. Если ошибок не было, компилятор выдавал в виде перфокарт программу на машинном языке.
5. Затем помещал программу на машинном языке в устройство считывания вместе с пачкой подпрограмм и загружал обе.
6. При ошибке все заново. Ошибки на распечатке.
В 60-е годы человек попытался ускорить дело, автоматизировав работу оператора. Программа под названием операционная система загружалась в компьютер на все время его работы.
первая широко распространенная ос FMS к компьютеру 709 компании IBM.
В последующие годы операционные системы все больше и больше усложнялись. К уровню архитектуры набора команд добавлялись новые команды, приспособления и особенности, и в конечном итоге сформировался новый уровень. Некоторые команды нового уровня были идентичны командам предыдущего, но некоторые (в частности, команды ввода-вывода) полностью отличались.
Первые ос распечатывали результат на принтере.
В начале 60-х годов исследователи Массачусетского технологического института (МТИ) разработали операционную систему, которая давала возможность работать с компьютером сразу нескольким программистам. -системами разделения времени.
С 1970 года, когда получило развитие микропрограммирование, у производителей появилась возможность вводить новые машинные команды расширением микропрограмм.
Конец микропрограммирования
В 60-70-х годах количество микропрограмм значительно увеличилось, они работали все медленнее и медленнее, поскольку требовали большого объема памяти. В конце концов исследователи осознали, что отказ от микропрограмм резко сократит количество команд, и компьютеры станут работать быстрее. Таким образом, компьютеры вернулись к тому состоянию, в котором они находились до изобретения микропрограммирования.



4 Процессор
На рис. показана структура обычного компьютера с шинной организацией. Центральный процессор - это мозг компьютера. Его задача - выполнять программы, находящиеся в основной памяти. Он вызывает команды из памяти, определяет их тип, а затем выполняет одну за другой. Компоненты соединены шиной, представляющей собой набор параллельно связанных проводов, по которым передаются адреса, данные и сигналы управления. Шины могут быть внешними (связывающими процессор с памятью и устройствами ввода-вывода) и внутренними.
Процессор состоит из нескольких частей. Блок управления - вызов команд из памяти и определение их типа. Арифметико-логическое устройство выполняет арифметические операции и логические.
Внутри центрального процессора находится память для хранения промежуточных результатов и некоторых команд управления-состоит из нескольких регистров, каждый из которых выполняет определенную функцию. Обычно размер всех регистров одинаков. Каждый регистр содержит одно число, которое ограничивается размером регистра. Регистры считываются и записываются очень быстро, поскольку они находятся внутри центрального процессора.
Самый важный регистр - счетчик команд, который указывает, какую команду нужно выполнять следующей. Название "счетчик команд" не соответствует действительности, поскольку он ничего не считает, но этот термин употребляется повсеместно1. Еще есть регистр команд, в котором находится выполняемая в данный момент команда. У большинства компьютеров имеются и другие регистры, одни из них многофункциональны, другие выполняют лишь какие-либо специфические функции.

5 Цикл тракта данных
Тракт данных - это часть центрального процессора, состоящая из АЛУ (арифметико-логического устройства), его входов и выходов. Тракт содержит ряд 32-разрядных регистровСодержание большинства регистров передается на шину В. Выходной сигнал АЛУ управляет схемой сдвига и далее шиной С. Значение с шины С может записываться в один или несколько регистров одновременно.
Синхронизация тракта данных.
В начале каждого цикла генерируется короткий импульс. Он может выдаваться задающим генератором. На спаде импульса устанавливаются биты, которые будут запускать все вентили. Затем выбирается регистр, и его значение передается на шину В. На это требуется время Ах. Далее АЛУ и схема сдвига начинают оперировать поступившими к ним данными. После промежутка Ау выходные сигналы АЛУ и схемы сдвига стабилизируются. В течение следующего отрезка, Àz, результаты проходят по шине С к регистрам, куда они загружаются на фронте следующего импульса. Загрузка должна запускаться фронтом сигнала и осуществляться мгновенно, так что даже в случае изменений каких-либо входных регистров изменения в шине С будут происходить только после полной загрузки регистров. На фронте импульса регистр, запускающий шину В, приостанавливает свою работу и ждет следующего цикла.
Важно понимать, что хотя в тракте данных нет никаких запоминающих элементов, для прохождения сигнала по нему требуется определенное время. Изменение значения на шине В вызывает изменения на шине С не сразу, а только после паузы (это объясняется задержками на каждом шаге).

6 Системы RISC и CISC
(70-ые годы)В компании IBM - экспериментальный высокоэффективный мини-компьютер 801.
В 1980 году группа разработчиков -разработка не ориентированных на интерпретацию процессоров VLSI [161, 164]- RISC, а новый процессор назвали RISC I, вслед за которым вскоре был выпущен RISC II. В 1981 году, Джон Хеннеси - MIPS [91]. Эти две микросхемы развились в коммерчески важные продукты SPARC и MIPS.
Новые процессоры существенно отличались от коммерческих процессоров того времени. Поскольку они были несовместимы с существующей продукцией, разработчики вправе были включать туда новые наборы команд, которые могли бы повысить общую производительность системы. Первоначально основное внимание уделялось простым командам, которые могли быстро выполняться. Однако вскоре разработчики осознали, что ключом к высокой производительности компьютера является разработка команд, которые можно быстро запускать.
Компьютер RISC (Reduced Instruction Set Computer - компьютер с сокращенным набором команд) противопоставлялся системе CISC (Complex Instruction Set Computer - компьютер с полным набором команд). В качестве примера машины типа CISC можно привести компьютер VAX, который доминировал в то время в университетской среде.
С этого момента противоречие между RISC и разработчиками VAX, Intel и мэйнфреймов IBM. По мнению первых - наилучший способ разработки компьютеров - включение туда небольшого количества простых команд, каждая из которых выполняется за один цикл тракта данных и помещает результат обратно в регистр. (RISC приходится выполнять 4 или 5 команд вместо одной, которую выполняет CISC, RISC все равно выигрывает в скорости, так как RISC-команды выполняются в 10 раз быстрее (поскольку они не интерпретируются)).
Но компьютеры RISC несовместимы с другими моделями вроде Intel. Во-вторых, как компания Intel сумела воплотить те же идеи в архитектуре CISC. Процессоры Intel RISC-ядро, которое выполняет самые простые (и обычно самые распространенные) команды за один цикл тракта данных, а по обычной технологии CISC интерпретируются более сложные команды. В результате обычные команды выполняются быстро, а более сложные и редкие - медленно. Хотя при таком "гибридном" подходе производительность ниже, чем в архитектуре RISC, новая архитектура CISC имеет ряд преимуществ- позволяет использовать старое программное обеспечение без изменений.

7 Принципы разработки современных компьютеров
Существует ряд принципов разработки, которым по возможности стараются следовать производители универсальных процессоров. Из-за некоторых внешних ограничений, например требования совместимости с другими машинами, приходится время от времени идти на компромисс, но эти принципы - цель, к которой стремятся большинство разработчиков.
♦ Все команды должны выполняться непосредственно аппаратным обеспечением. То есть обычные команды не интерпретируются микрокомандами. Устранение уровня интерпретации повышает скорость выполнения большинства команд. В компьютерах типа CISC более сложные команды могут разбиваться на несколько шагов, которые затем выполняются как последовательность микрокоманд. Эта дополнительная операция снижает быстродействие машины, но может использоваться для редко применяемых команд.
♦ Компьютер должен запускать как можно больше команд в секунду. В современных компьютерах используется много различных способов повышения производительности, главный из которых - запуск как можно большего количества команд в секунду. Этот принцип предполагает, что параллелизм должен играть главную роль в повышении производительности, поскольку запустить на выполнение большое количество команд за короткий промежуток времени можно только в том случае, если есть возможность одновременного выполнения нескольких команд.
♦ Команды должны легко декодироваться. Предел количества запускаемых в секунду команд зависит от темпа декодирования отдельных команд. Декодирование команд позволяет определить, какие ресурсы им необходимы и какие действия нужно выполнить. Полезно все, что способствует упрощению этого процесса.
♦ К памяти должны обращаться только команды загрузки и сохранения. Один из самых простых способов разбить операцию на отдельные шаги - сделать так, чтобы операнды большей части команд брались из регистров и возвращались туда же. Операция перемещения операндов из памяти в регистры и обратно может осуществляться в разных командах.
♦ Регистров должно быть много. Поскольку доступ к памяти происходит довольно медленно. Если слово однажды вызвано из памяти, при наличии большого числа регистров оно может содержаться в регистре до тех пор, пока не потребуется. Возвращение слова из регистра в память и новая загрузка этого же слова в регистр нежелательны. Лучший способ избежать излишних перемещений - наличие достаточного количества регистров.
8 Параллелизм на уровне команд. Конвейеры
Один из способов заставить процессоры работать быстрее - повышение их тактовой частоты, однако при этом существуют некоторые технологические ограничения, связанные с конкретным историческим периодом. Поэтому для повышения производительности при данной тактовой частоте процессора используют параллелизм (выполнение двух или более операций одновременно).
Существует две основные формы параллелизма: параллелизм на уровне команд и параллелизм на уровне процессоров. В - запуска большого количества команд каждую секунду. Во втором -работают одновременно несколько процессоров.
Конвейеры
Раньше команды обрабатыв. за два шага: сначала происходит вызов команды, а затем - ее выполнение. Затем появилась идея конвейера - при использовании команда обрабатывается уже не за два, а за > количество шагов, каждый из которых реализуется определенным аппаратным компонентом, причем все эти компоненты могут работать параллельно.
Конвейеры позволяют добиться компромисса между временем запаздывания (время выполнения одной команды) и пропускной способностью процессора
(количество команд, выполняемых процессором в секунду).


9 Параллелизм на уровне команд. Суперскалярная архитектура
Один из способов заставить процессоры работать быстрее - повышение их тактовой частоты, однако при этом существуют некоторые технологические ограничения, связанные с конкретным историческим периодом. Поэтому для повышения производительности при данной тактовой частоте процессора используют параллелизм (выполнение двух или более операций одновременно).
Существует две основные формы параллелизма: параллелизм на уровне команд и параллелизм на уровне процессоров. В - запуска большого количества команд каждую секунду. Во втором -работают одновременно несколько процессоров.
Суперскалярные архитектуры
Один конвейер - хорошо, а два - еще лучше. Каждый конвейер содержит АЛУ для параллельных операций. Чтобы выполняться параллельно, две команды не должны конфликтовать из-за ресурсов (например, регистров), и ни одна из них не должна зависеть от результата выполнения другой.
Раньше. конвейеры только в RISC-компьютерах. Имелись сложные правила определения, является ли пара команд совместимой в отношении возможности параллельного выполнения. Если команды, входящие в пару, были сложными или несовместимыми, выполнялась только одна из них . Оставшаяся вторая команда составляла затем пару со следующей командой. Команды всегда выполнялись по порядку.
Сейчас суперскалярными -процессоры, способные запускать несколько команд (зачастую от четырех до шести) за один тактовый цикл( чтобы передавать команды должно быть несколько функциональных блоков).
Большинству функциональных блоков ступени 4 (точнее, обоим блокам доступа к памяти и блоку выполнения операций с плавающей точкой) для обработки команды требуется значительно больше времени, чем занимает один цикл.


10 Параллелизм на уровне процессоров. Матричный процессор
Быстродействие процессоров растет, но у них постоянно возникают проблемы со скоростью передачи информации. Параллелизм на уровне команд в определенной степени помогает, но конвейеры и суперскалярная архитектура обычно повышают скорость работы всего лишь в 5-10 раз. Чтобы увеличить производительность в 50, 100 и более раз, нужно создавать компьютеры с несколькими процессорами.
Матричные компьютеры
Матричный процессор (array processor) состоит из большого числа сходных процессоров, которые выполняют одну и ту же последовательность команд применительно к разным наборам данных. Первым в мире таким процессором был ILLIAC IV (Университет Иллинойс). Первоначально предполагалось сконструировать машину, состоящую из четырех квадрантов, каждый из которых содержал матрицу размером 8 х 8 из блоков процессор/память. Для каждого квадранта имелся один блок контроля. Он рассылал команды, которые выполнялись всеми процессорами одновременно, при этом каждый процессор использовал собственные данные из собственной памяти (загрузка данных происходила при инициализации). Это решение, значительно отличающееся от стандартной фон-неймановской машины, иногда называют архитектурой SIMD (Single Instruction-stream Multiple Data-stream - один поток команд с несколькими потоками данных)
С точки зрения программиста, векторный процессор (vector processor) очень похож на матричный.


11 Параллелизм на уровне процессоров. Векторный процессор
Быстродействие процессоров растет, но у них постоянно возникают проблемы со скоростью передачи информации. Параллелизм на уровне команд в определенной степени помогает, но конвейеры и суперскалярная архитектура обычно повышают скорость работы всего лишь в 5-10 раз. Чтобы увеличить производительность в 50, 100 и более раз, нужно создавать компьютеры с несколькими процессорами.
Векторный процессор.С точки зрения программиста, векторный процессор (vector processor) очень похож на матричный. Как и матричный, он чрезвычайно эффективен при выполнении последовательности операций над парами элементов данных. Однако в отличие от матричного процессора, все операции сложения выполняются в одном блоке суммирования, который имеет конвейерную структуру. Компания Cray Research, основателем которой был Сеймур Крей, выпустила множество моделей векторных процессоров, начиная с модели Сгау-1 (1974). Компания Cray Research в настоящее время входит в состав SGI.
Оба типа процессоров работают с массивами данных. Оба они выполняют одни и те же команды, которые, например, попарно складывают элементы двух векторов. Однако если у матричного процессора столько же суммирующих устройств, сколько элементов в массиве, векторный процессор содержит векторный регистр, состоящий из набора условных регистров. Эти регистры загружаются из памяти единственной командой, которая фактически делает это последовательно. Команда сложения попарно складывает элементы двух таких векторов, загружая их из двух векторных регистров в суммирующее устройство с конвейерной структурой. В результате из суммирующего устройства выходит другой вектор, который либо помещается в векторный регистр, либо сразу используется в качестве операнда при выполнении другой операции с векторами.
Матричные процессоры в настоящее время не выпускаются, но принцип, на котором они основаны, по-прежнему актуален. Аналогичная идея применяется в наборах ММХ- и SSE-команд процессоров Pentium 4, и она успешно решает задачу ускоренного выполнения мультимедийных программ. В этом отношении компьютер ILLIAC IV можно считать одним из прародителей процессора Pentium 4.



12 Память.
Память - это тот компонент компьютера, в котором хранятся программы и данные. Можно также употреблять термин запоминающее устройство. Без памяти, откуда процессоры считывают и куда записывают информацию, не было бы цифровых компьютеров со встроенными программами. Внутренняя память - хранения относительно небольших объемов информации при ее обработке микропроцессором.
Внешняя память - длительного хранения больших объемов информации независимо от того включен или выключен компьютер.
Энергозависимой - стирается при выключении компьютера.
Энергонезависимой -которая не стирается при выключении компьютера.
К энергонезависимой внутренней памяти относится постоянное запоминающее устройство (ПЗУ). К энергозависимой -оперативное запоминающее устройство (ОЗУ), видеопамять и кэш-память. Воперативном запоминающем устройстве в двоичном виде запоминается обрабатываемая информация, программа ее обработки, промежуточные данные и результаты работы. ОЗУ обеспечивает режимы записи, считывания и хранения информации– RAM (Random Access Memory – память с произвольным доступом). -внутри корпуса компьютера. Часть оперативной памяти - хранения изображений- видеопамять.Высокоскоростная кэш-память -увеличения скорости выполнения операций компьютером и используется при обмене данными между микропроцессором и RAM. Кэш-память является промежуточным запоминающим устройством (буфером). Существует два вида кэш-памяти: внутренняя, внешняя.Внешняя память -с произвольным доступом и последовательным. Устройства памяти с произвольным доступом- доступ к блоку данных примерно за одно и то же время доступа:
1. Накопители на жёстких магнитных дисках (винчестеры, НЖМД) –
2. Накопители на гибких магнитных дисках (флоппи-дисководы,
3. Оптические диски (СD-ROM - Compact Disk Read Only Memory) - Устройства памяти с последовательным доступом :
1. Накопители на магнитных лентах (НМЛ) 2. Перфокарты и перфоленты .
13 Память. Код исправления ошибок
Память - это тот компонент компьютера, в котором хранятся программы и данные. Можно также употреблять термин запоминающее устройство. Без памяти, откуда процессоры считывают и куда записывают информацию, не было бы цифровых компьютеров со встроенными программами.
Память компьютера может ошибаться. Чтобы бороться с ошибками, используются специальные коды, умеющие обнаруживать и исправлять ошибки. В этом случае к каждому слову в памяти особым образом добавляются дополнительные биты. Когда слово считывается из памяти, эти дополнительные биты проверяются, что и позволяет обнаруживать ошибки.
(Число битовых позиций, по которым различаются два слова, называется интервалом Хэмминга)
Память состоит из т-разрядных слов, следовательно, существуют 2т вариантов сочетания битов. Кодовые слова состоят из п бит, но из-за способа подсчета контрольных разрядов допустимы только 2т из 2п кодовых слов. Если в памяти обнаруживается недопустимое кодовое слово, компьютер знает, что произошла ошибка.


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

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


15 Оперативная память. DRAM, ее типы
Операти́вная па́мять — энергозависимая часть системы компьютерной памяти, в которой временно хранятся входные, выходные и промежуточные данные программы процессора. Наиболее распространенные типы DIMM и SIMM.Обмен данными между процессором и оперативной памятью производится:непосредственно;через сверхбыструю память 0-го уровня — регистры в АЛУ, либо при наличии аппаратного кэша процессора — через кэш.
Оперативное запоминающее устройство, ОЗУ — техническое устройство, реализующее функции оперативной памяти.ОЗУ может изготавливаться как отдельный внешний модуль или располагаться на одном кристалле с процессором, например, в однокристальных ЭВМ или однокристальных микроконтроллерах.
Сейчас применяются три основных вида ОЗУ:
• статическое (SRAM) память в виде массивов триггеров;
• динамическое (DRAM) память в виде массивов конденсаторов;
• основанном на изменении фазы (PRAM).
DRAM .Экономичный вид памяти. Для хранения разряда (бита или трита) используется схема, состоящая из одного конденсатора и одного транзистора. Такой вид памяти, во-первых, дешевле и, во-вторых, занимает меньшую площадь на кристалле. Но DRAM имеет и недостатки. Во-первых, работает медленнее, поскольку если в SRAM изменение управляющего напряжения на входе триггера сразу очень быстро изменяет его состояние, то для того, чтобы изменить состояние конденсатора его нужно зарядить или разрядить. Перезаряд конденсатора гораздо более длителен (в 10 и более раз), чем переключение триггера, даже если ёмкость конденсатора очень мала. Второй существенный недостаток — конденсаторы со временем разряжаются. Причём разряжаются они тем быстрее, чем меньше их электрическая ёмкость и больше ток утечки, в основном, утечка через ключ.
Именно из-за того, что заряд конденсатора динамически уменьшается во времени, память на конденсаторах получила своё название DRAM — динамическая память. Поэтому, дабы не потерять содержимое памяти, заряд конденсаторов периодически восстанавливается («регенерируется») через определённое время, называемое циклом регенерации (обычно 2 мс). Для регенерации в современных микросхемах достаточно выполнить циклограмму «чтения» по всем строкам запоминающей матрицы. Процедуру регенерации выполняет процессор или контроллер памяти. Так как для регенерации памяти периодически приостанавливается обращение к памяти, это снижает среднюю скорость обмена с этим видом ОЗУ.

16 Магнитные диски
В настоящее время компания IBM делает их из стекла.Дорожкой называется круговая последовательность битов, записанных на диск за его полный оборот. Каждая дорожка делится на секторы фиксированной длины. Каждый сектор обычно содержит 512 байт данных. Перед данными располагается преамбула (preamble), которая позволяет головке синхронизироваться перед чтением или записью. После данных идет код исправления ошибок (Error-Correcting Code, ЕСС), в качестве которого используется код Хэмминга или чаще код Рида-Соломона. Между соседними секторами находится межсекторный интервал. Многие производители указывают размер неформатированного. Емкость форматированного диска обычно на 15 % меньше емкости неформатированного.
У всех дисков есть кронштейны, они могут перемещаться туда и обратно по радиусу на разные расстояния от шпинделя, вокруг которого вращается диск. На разных расстояниях от оси записываются разные дорожки. Таким образом, дорожки представляют собой ряд концентрических кругов, расположенных вокруг шпинделя. Ширина дорожки зависит от величины головки и от точности ее перемещения. На сегодняшний момент диски имеют от 5000 до 10 000 дорожек на см, то есть ширина каждой дорожки составляет от 1 до 2 микрон (1 микрон = = 1/1000 мм). Следует отметить, что дорожка - это не углубление на поверхности диска, а просто кольцо намагниченного материала, которое отделяется от других дорожек небольшими пограничными областями.
Плотность записи битов на концентрических дорожках различается в зависимости от расстояния от центра диска и зависит главным образом от качества поверхности диска и чистоты воздуха. Для повышения плотности запись вертикально - оно как бы уходит в глубь материала(перпендикулярной записью).Чтобы достичь высокого качества поверхности и достаточной чистоты воздуха, диски герметично закрываются. Такие диски называются винчестерами. Впервые они были выпущены фирмой IBM. У них было 30 Мбайт фиксированной памяти и 30 Мбайт сменной памяти.Большинство магнитных дисков состоит из нескольких пластин, расположенных друг под другом.Каждая поверхность снабжена кронштейном и головкой. Кронштейны скреплены таким образом, что одновременно могут перемещаться на разные расстояния от оси. Совокупность дорожек, расположенных на одном расстоянии от центра, называется цилиндром.

17 Шины. Виды шин. Шина ISA
Шины соединяют компьютерную систему в единое целое. шин: ISA, PCI и USB. Шина ISA представляет собой незначительно усовершенствованный вариант шины IBM PC - первой шины для персональных компьютеров компании IBM. По соображениям совместимости она еще несколько лет назад устанавливалась во всех персональных компьютерах Intel, но впоследствии Intel и Microsoft договорились прекратить ее поддержку. В любом случае не слишком "древние" компьютеры с шиной ISA всегда содержат еще одну шину, которая работает быстрее, чем ISA. Это - шина PCL Она шире, чем ISA, и функционирует с более высокой тактовой частотой. Следовательно, за одну секунду она передает больше данных, чем ISA. В большинстве современных ПК именно она берет на себя основную нагрузку, хотя в последнее время все заметнее становится роль шин USB, применяемых в качестве инструмента ввода-вывода для периферийных устройств с невысоким быстродействием
Шина ISA.
Шина для соединения центрального процессора, памяти и устройств ввода-вывода; большинство систем имеют две и более шины.
Каждое устройство ввода-вывода состоит из двух частей: одна объединяет большую часть электроники и называется контроллером, а другая представляет собой само устройство ввода-вывода, например дисковод.
Шина используется не только контроллерами ввода-вывода, но и процессором для передачи команд и данных. Необходимо отметить, что в существующих сегодня компьютерных стандартах шина ISA уже не упоминается.

18 Шины. Виды шин. Шина PCI
Шины соединяют компьютерную систему в единое целое. шин: ISA, PCI и USB. Шина ISA представляет собой незначительно усовершенствованный вариант шины IBM PC - первой шины для персональных компьютеров компании IBM. По соображениям совместимости она еще несколько лет назад устанавливалась во всех персональных компьютерах Intel, но впоследствии Intel и Microsoft договорились прекратить ее поддержку. В любом случае не слишком "древние" компьютеры с шиной ISA всегда содержат еще одну шину, которая работает быстрее, чем ISA. Это - шина PCL Она шире, чем ISA, и функционирует с более высокой тактовой частотой. Следовательно, за одну секунду она передает больше данных, чем ISA. В большинстве современных ПК именно она берет на себя основную нагрузку, хотя в последнее время все заметнее становится роль шин USB, применяемых в качестве инструмента ввода-вывода для периферийных устройств с невысоким быстродействием
Шина PCI .
В настоящее время самой популярной моделью является шина PCI (Peripheral Component Interconnect - взаимодействие периферийных компонентов), разработанная компанией Intel, которая решила открыть всю связанную с шиной техническую информацию, чтобы сторонние производители (в том числе конкуренты компании) могли разрабатывать соответствующие устройства.
Существует много различных конфигураций шины PCI -центральный процессор взаимодействует с контроллером памяти по выделенному высокоскоростному соединению. Таким образом, контроллер соединяется с памятью непосредственно.

19. Шины. Виды шин. Шина PCI-Express

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

Самым нижним является физический уровень. Он отвечает за передачу битов от отправителя к получателю по двухточечному соединению. Каналы, входящие в пары, называются полосами (lanes). На каждое направление должно быть выделено одинаковое количество полос. В отличие от шин ISA, EISA и PCI, в технологии PCI Express не предусмотрен тактовый генератор. Устройства вправе начинать передачу в любой момент, как только им будет, что передавать. Канальный уровень отвечает за передачу пакетов. На этом уровне к заголовку и полезной нагрузке, переданным с уровня транзакций, добавляется порядковый номер и код исправления ошибок — так называемый CRC (Cyclic Redun- Redundancy Check — циклический контроль избыточности). CRC-код генерируется путем выполнения определенного алгоритма в отношении заголовка и полезной нагрузки. На уровне транзакций выполняются все операции шины. Каждая полоса на уровне каналов подразделяется на несколько (до восьми) виртуальных каналов, по каждому из которых передаются данные того или иного типа. Программный уровень выступает посредником между PCI Express и операционной системой. Команда, поступающая на программный уровень, передается на уровень транзакций, где из нее формируются заголовок и полезная нагрузка. Затем эти компоненты отправляются на канальный уровень, на котором в заголовке пакета устанавливается порядковый номер, а в хвостовике — CRC-код. Далее этот расширенный пакет передается на физический уровень, где с обоих концов к нему добавляются параметры кадра, и получившийся в результате физический пакет передается от отправителя получателю.

20. Шины. Виды шин. Шина USB

Шины PCI и PCI Express очень хорошо подходят для соединения высокоскоростных периферийных устройств, но использовать интерфейс PCI для низкоскоростных устройств ввода-вывода (например, мыши и клавиатуры) было бы слишком дорого. В 1993 году представители семи компаний (Compaq, DEC, IBM, Intel, Microsoft, NEC и Nothern Telecom) собрались вместе, чтобы разработать шину USB (Universal Serial Bus — универсальная последовательная шина). Шина USB состоит из корневого хаба (root hub), который вставляется в разъем главной шины (см. рис. 3.49). Этот корневой хаб (часто называемый корневым концентратором) содержит разъемы для кабелей, которые могут подсоединяться к устройствам ввода-вывода. Кабель состоит из четырех проводов: два из них предназначены для передачи данных, один — для питания (+5 В) и один — для земли. Система передает 0 изменением напряжения, а 1 — отсутствием изменения напряжения, поэтому длинная последовательность нулевых битов порождает поток регулярных импульсов. Когда соединяется новое устройство ввода-вывода, корневой хаб обнаруживает этот факт и прерывает работу операционной системы. Затем операционная система запрашивает новое устройство, выясняя, что оно собой представляет и какая пропускная способность шины для него требуется. Шина USB поддерживает 4 типа кадров: кадры управления, изохронные кадры, кадры передачи больших массивов данных и кадры прерывания. Кадры управления используются для конфигурирования устройств, передачи устройствам команд и запросов об их состоянии. Изохронные кадры предназначены для устройств реального времени (микрофонов, акустических систем и телефонов), которые должны принимать и посылать данные через равные временные интервалы. Задержки хорошо прогнозируются, но в случае ошибки такие устройства не производят повторной передачи. Кадры следующего типа используются для передач большого объема от устройств и к устройствам (например, принтерам) без требований, характерных для устройств реального времени. Наконец, кадры последнего типа нужны потому, что шина USB не поддерживает прерываний.

21 Уровень микроархитектуры. IJVM, линии управления АЛУ
На спаде импульса устанавливаются биты, которые будут запускать все вентили. Этот процесс занимает определенный отрезок времени Aw. Затем выбирается регистр, и его значение передается на шину В. На это требуется время Ах. Далее АЛУ и схема сдвига начинают оперировать поступившими к ним данными. После промежутка Ау выходные сигналы АЛУ и схемы сдвига стабилизируются. В течение следующего отрезка, Дг, результаты проходят по шине С к регистрам, куда они загружаются на фронте следующего импульса. Загрузка должна запускаться фронтом сигнала и осуществляться мгновенно, так что даже в случае изменений каких-либо вход- входных регистров изменения в шине С будут происходить только после полной загрузки регистров. На фронте импульса регистр, запускающий шину В, приостанавливает свою работу и ждет следующего цикла. На рисунке имеются еще регистры МРС и MIR, а также память.
21 Цикл тракта данных можно разбить на подциклы. Начало подцикла 1 инициирует спад синхронизирующего сигнала. Далее показано, что происходит во время каждого из подциклов. В скобках приводится величина подцикла.
22 1. Устанавливаются сигналы управления (Aw).
23 2. Значения регистров загружаются на шину В (Ад:).
24 3. Действуют АЛУ и схемы сдвига (Az/).
25 4. Результаты проходят по шине С обратно к регистрам (Az).
26 На фронте следующего цикла результаты сохраняются в регистрах.



22 Уровень микроархитектуры. IJVM, синхронизация трактая данных

На спаде импульса устанавливаются биты, которые будут запускать все вентили. Этот процесс занимает определенный отрезок времени Aw. Затем выбирается регистр, и его значение передается на шину В. На это требуется время Ах. Далее АЛУ и схема сдвига начинают оперировать поступившими к ним данными. После промежутка Ау выходные сигналы АЛУ и схемы сдвига стабилизируются. В течение следующего отрезка, Дг, результаты проходят по шине С к регистрам, куда они загружаются на фронте следующего импульса. Загрузка должна запускаться фронтом сигнала и осуществляться мгновенно, так что даже в случае изменений каких-либо вход- входных регистров изменения в шине С будут происходить только после полной загрузки регистров. На фронте импульса регистр, запускающий шину В, приостанавливает свою работу и ждет следующего цикла. На рисунке имеются еще регистры МРС и MIR, а также память.
Цикл тракта данных можно разбить на подциклы. Начало подцикла 1 инициирует спад синхронизирующего сигнала. Далее показано, что происходит во время каждого из подциклов. В скобках приводится величина подцикла.
1. Устанавливаются сигналы управления (Aw).
2. Значения регистров загружаются на шину В (Ад:).
3. Действуют АЛУ и схемы сдвига (Az/).
4. Результаты проходят по шине С обратно к регистрам (Az).
На фронте следующего цикла результаты сохраняются в регистрах.
23 Функционировании памяти
Наша машина может взаимодействовать с памятью двумя способами: через порт с пословной адресацией C (32-разрядный) и через порт с побайтовой адресацией (8-разрядный). Порт с пословной адресацией управляется двумя регистрами: MAR — адресный регистр памяти и MDR — информационный регистр памяти. Порт с побайтовой адресацией управляется регистром PC, который записывает 1 байт в 8 младших битов регистра MBR — буферный регистр памяти. Этот порт может считывать данные из памяти, но не может записывать их в память. Каждый из этих регистров, а также все остальные регистры запускаются одним из сигналов управления. Поскольку регистр MBR не может загружаться с шины С, у него нет записывающего сигнала управления (но зато есть два сигнала разрешения, о которых речь пойдет далее). Чтобы инициировать процесс считывания из памяти или записи в память, нужно загрузить соответствующие регистры памяти, а затем передать памяти сигнал чтения или записи. Регистр MAR содержит адреса слов, таким образом, значения 0, 1, 2 и т. д. указывают на последовательные слова. Регистр PC содержит адреса байтов, таким образом, значения 0, 1, 2 и т. д. указывают на последовательные байты. Регистры MAR и MDR используются для чтения и записи слов данных на уровне архитектуры команд, а регистры PC и MBR — для считывания программы уровня архитектуры команд, которая состоит из потока байтов. Во всех остальных регистрах, содержащих адреса, применяется принцип пословной адресации, как и в MAR. Как уже отмечалось, данные, считанные из памяти через 8-разрядный порт, сохраняются в 8-разрядном регистре MBR. Этот регистр может быть скопирован
на шину В двумя способами: со знаком и без знака.

24 Микрокоманды

29 сигналов. Их можно разделить на пять функциональных групп:
+ 9 сигналов для записи данных с шины С в регистры;
+ 9 сигналов для разрешения передачи регистров на шину Вив АЛУ;
+ 8 сигналов для управления АЛУ и схемой сдвига;
+ 2 сигнала, которые указывают, что нужно осуществить чтение или запись
через регистры MAR/MDR (на рисунке они не показаны);
+ 1 сигнал, который указывает, что нужно осуществить вызов из памяти через регистры PC/MBR.
Значения этих 29 сигналов управления определяют операции для одного цикла тракта данных. Цикл состоит из передачи значений регистров на шину В, прохождения этих сигналов через АЛУ и схему сдвига, передачи полученных результатов на шину С и записи их в нужный регистр (регистры). Кроме того, если установлен сигнал считывания данных, то в конце цикла после загрузки регистра MAR начинает работать память. Данные из памяти помещаются в MBR или
MDR в конце следующего цикла, а использоваться эти данные могут в цикле, который идет после него. Сигналы управления памятью выдаются только после загрузки регистров MAR и PC, которая происходит на фронте синхронизирующего сигнала незадолго до конца цикла 1. Будем считать, что память помещает результаты на шину памяти в течение одного цикла, поэтому регистры MBR и/или MDR могут загружаться на следующем фронте вместе с другими регистрами. Так как регистры MBR и MDR загружаются на фронте синхронизирующего сигнала вместе с другими регистрами, их можно считывать во время циклов, в течение которых осуществляется передача нового слова из памяти. Они возвращают старые значения, поскольку прошло еще недостаточно времени для того, чтобы они сменились новыми. Здесь нет никакой двусмысленности: до тех пор, пока новые значения не загрузятся в регистры MBR и MDR на фронте сигнала, предыдущие значения находятся там и могут использоваться. Отметим, что операции считывания могут проходить одна за другой, то есть в двух последовательных циклах.






25 Управление микрокомандами

Для этого существует контроллер последовательности, который отвечает за последовательность операций, необходимых для выполнения одной команды. Контроллер последовательности в каждом цикле должен выдавать следующую информацию:
+ состояние каждого сигнала управления в системе;
+ адрес микрокоманды, которая будет выполняться следующей.
Самой большой и самой важной частью блока управления является управляющая память. Удобно рассматривать ее как память, в которой хранится вся микропрограмма, хотя иногда микропрограмма реализуется в виде набора логических вентилей. Функционально управляющая память представляет собой память, в которой вместо обычных команд хранятся микрокоманды. Управляющая память отличается от основной памяти тем, что команды, хранящиеся в основной памяти, выполняются в соответствии с их адресами (за исключением ветвлений), а микрокоманды — нет. Поскольку управляющая память функционально представляет собой ПЗУ, ей нужны собственные адресный регистр и регистр данных. Ей не требуются сигналы чтения и записи, поскольку процесс считывания происходит постоянно. Мы назовем адресный регистр управляющей памяти МРС — счетчик микропрограмм. Название не очень подходящее, поскольку микропрограммы не упорядочены явным образом, и понятие счетчика тут неуместно, но мы
не можем пойти против традиций. Регистр данных мы назовем MIR
— регистр микрокоманд). Он содержит текущую микрокоманду, биты которой запускают сигналы управления, влияющие на работу тракта данных.

26 Пример набора команд IJVM

Hex Мнемоника Примечание
0x10 BlPUSH byte Помещает байт в стек .0x59 DUP Копирует верхнее слова стека и помещает его в стек .0хА7 GOTO offset Безусловный переход
0x60 IADD Выталкивает два слова из стека; помещает в стек их сумму
0х7Е IAND Выталкивает два слова из стека; помещает в стек результат логического умножения (операция И)
0x99 IFEQ offset Выталкивает слово из стека и совершает переход, если оно равно нулю
0х9В IFLT offset Выталкивает слово из стека и совершает переход, если оно меньше нуля
0x9F IFJCMPEQ offset Выталкивает два слова из стека; совершает переход, если они равны
0x84 IINC varnum const Прибавляет константу к локальной переменной
0x15 ILOAD varnum Помещает локальную переменную в стек
ОхВб INVOKEVIRTUAL disp Вызывает процедуру
0x80 IOR Выталкивает два слова из стека; помещает в стек результат логического сложения (операция ИЛИ)
ОхАС IRETURN Выдает результат выполнения процедуры (целое число)
0x36 ISTORE varnum Выталкивает слово из стека и запоминает его во фрейме локальных переменных
0x64 ISUB Выталкивает два слова из стека; помещает в стек их разность
0x13 LDC_W index Берет константу из набора констант и помещает ее в стек
0x00 NOP Не производит никаких действий
0x57 POP Удаляет верхнее слово стека
0x5F SWAP Переставляет два верхних слова стека
0хС4 WIDE Префиксная команда; следующая команда содержит 16-разрядный индекс
Команды нужны для того, чтобы помещать слова из различных источников в стек. Источники — это набор констант (LDCW), фрейм локальных переменных (ILOAD) и сама команда (BIPUSH). Переменную можно также вытолкнуть из стека и сохранить во фрейме локальных переменных (ISTORE). Над двумя верхними словами стека можно совершать две арифметические (IADD и ISUB) и две логические операции (IAND и I0R). При выполнении любой арифметической или логической операции два слова выталкиваются из стека, а результат помещается обрат- обратно в стек. Существует 4 команды перехода: одна для безусловного перехода (GOTO), а три другие для условных переходов (IFEQ, IFLT и IFICMPEQ). Все эти команды изменяют значение PC на размер их смещения, который следует за кодом операции в команде. Операнд смещения состоит из 16 бит. Он прибавляется к адресу кода операции. Существуют также команды для перестановки двух верхних слов стека (SWAP), дублирования верхнего слова (DUP) и удаления верхнего слова (POP).
27 Модель памяти IJVM
Она состоит из памяти, которую можно рассматривать либо как массив из 4 294 967 296 байт D Гбайт), либо как массив из 1 073 741 824 слов, каждое из которых содержит 4 байта. В отличие от большинства архитектур команд, виртуальная машина Java не выполняет обращений к памяти, видимых на уровне команд, но имеет несколько неявных адресов, которые составляют основу указателя. IJVM-команды могут обращаться к памяти только через эти указатели. Определены следующие области памяти:
• Набор констант. Эта область, недоступная для записи из IJVM-программы, состоит из констант, строк и указателей на другие области памяти, на которые можно делать ссылку.
• Фрейм локальных переменных. Эта область предназначена для хранения переменных во время выполнения процедуры.
• Стек операндов. Стек операндов не должен быть больше определенного размера, который заранее вычисляется компилятором Java. Пространство стека операндов располагается прямо над фреймом локальных переменных.
• Область процедур. Наконец, существует область памяти, в которой содержится программа. Есть виртуальный регистр, содержащий адрес команды, которая должна вызываться следующей. Этот указатель называется счетчиком команд (Program Counter, PC). В отличие от других областей памяти, область процедур представляет собой массив байтов.

28 Разработка уровня микроархитектуры. Подходы к сокращению циклов.

Слияние цикла интерпретатора с микропрограммой. В микроархитектуре Mic-1 основной цикл состоит из микрокоманды, которая должна выполняться в начале каждой IJVM-команды. В некоторых случаях допустимо ее перекрытие предыдущей командой. Каждый раз основной цикл может добавляться в конце этой последовательности (а не в начале следующей), при этом межуровневый переход дублируется много раз (но всегда с одним и тем же набором целевых объектов). В некоторых случаях микрокоманда микроархитектуры Mic-1 может сливаться с предыдущими микрокомандами, поскольку эти команды используются не всегда полностью.
3-шинная архитектура. Можно подвести к АЛУ две полные входные шины, А и В, и, следовательно, всего получится три шины. Все (или по крайней мере большинство регистров) должны иметь доступ к обеим входным шинам. Преимущество такой системы состоит в возможности складывать любой регистр с любым другим регистром за один цикл. Блок выборки команд. Чтобы объединить основной цикл с какой-нибудь микрокомандой, нужно освободить АЛУ от некоторых задач подобного рода. Для этого можно ввести второе АЛУ, хотя полнофункциональное АЛУ в большинстве случаев для этого не потребуется. Отметим, что АЛУ часто применяется для копирования значения из одного регистра в другой. Эти циклы можно убрать, если ввести дополнительные тракты данных, которые не проходят через АЛУ. В микроархитектуре Mic-1 с АЛУ можно снять большую часть нагрузки, если создать независимый блок для вызова и обработки команд. Этот блок, который называется блоком выборки команд, может независимо от АЛУ увеличивать значение PC на 1 и вызывать байты из потока байтов до того, как они понадобятся.

29 Ассоциативная кэш-память с множетсвенным доступом

Если нужно поместить новый элемент в кэш-память, какой именно из старых элементов удалить? Для большинства задач хорошо подходит алгоритм обработки элемента, который дольше всего не использовался. Немедленное обновление элемента основной памяти называется сквозной записью. В сложных проектах стремятся использовать альтернативный подход — обратную, или отложенную, запись. В большинстве разработок, в которых применяется обратная запись, данные передаются в кэш-память. Эта технология называется заполнением по записи. С другой стороны, в тех разработках, где применяется сквозная запись, элемент в кэш-память при записи обычно не помещается, поскольку это усложняет систему. Заполнение по записи полезно только в том случае, если имеют место повторные записи в одно и то же слово или в разные слова в пределах одной строки кэша.

30 Микроархитектура Pentium 4

Микроархитектура Pentium 4, называемая NetBurst. Pentium 4 состоит из четырех основных блоков: подсистемы памяти, блока предварительной обработки, блока контроля исполнения с изменением последовательности и блока исполнения. В состав подсистемы памяти входит объединенный кэш второго уровня (L2), а также логика доступа к внешнему ОЗУ по шине памяти. С кэшем тесно связан блок предварительной выборки, который пытается перенести данные из основной памяти в L2 еще до того, как эти данные запрошены. Блок предварительной обработки, который выбирает команды из L2 и декодирует их в порядке выполнения команд программы. Каждая команда на уровне ISA разбивается на последовательность RISC-подобных микроопераций. Декодированные микрооперации отправляются в кэш трасс, в роли которого выступает кэш команд первого уровня. Поскольку кэшируются не исходные команды, а декодированные микрооперации, необходимость в повторном декодировании при извлечении команды из кэша трасс отпадает. Команды передаются из кэша трасс планировщику команд в порядке, определяемом программой, но при их выполнении возможно отступление от этого порядка. При обнаружении микрооперации, которую нельзя выполнить, планировщик команд удерживает ее, одновременно продолжая обрабатывать поток команд — запускаются все последующие команды, которые не предусматривают обращение к занятым ресурсам. Блок исполнения, объединяющий специализированные блоки исполнения, которые непосредственно осуществляют целочисленные операции, операции с плавающей точкой и специализированные команды.


31 Конвейер NetBurst
Блок предварительной обработки, ответственный за выборку команд из памяти и их подготовку к выполнению. Этот блок получает новые инструкции Pentium из кэша второго уровня порциями по 64 бит. Они декодируются в микрооперации и помещаются в кэш трасс. Емкость кэша трасс составляет 12 000 микроопераций, и по своей производительности он сопоставим с традиционным кэшем первого уровня на 8 или 16 Кбайт. Встретившись с командой безусловного перехода, блок декодирования ищет предсказанный объект перехода в буфере объектов перехода первого уровня и продолжает декодирование с соответствующего адреса. Для прогнозирования микроопераций перехода применяется буфер трасс объектов перехода, или ВТВ трасс. Второй компонент конвейера — логика исполнения с изменением последовательности — получает данные из кэша трасс емкостью 12 000 микроопераций. При поступлении из блока предварительной обработки каждой последующей микрооперации (а за цикл их поступает три) блок распределения и подмены регистрирует ее в таблице, состоящей из 128 записей и называемой буфером переупорядочивания команд.

32 Параллельные архитектуры, их виды.

Для возможности решать более сложные задачи, разработчики обратились к компьютерам параллельного действия. Невозможно построить компьютер с одним процессором и временем цикла в 0,001 не, но зато можно построить компьютер с 1000 процессорами, время цикла каждого из которых составляет 1 не. И хотя быстродействия каждого процессора во втором случае очевидно мало, теоретически мы должны получить требуемую производительность.
Когда два процессора или обрабатывающих элемента находятся рядом и обмениваются большими объемами данных с небольшими задержками, они называются сильно связанными. Соответственно, когда два процессора или обрабатывающих элемента располагаются далеко друг от друга и обмениваются небольшими объемами данных с большими задержками, они называются слабо связанными.

33 Параллельные архитектуры, стратегии управления ресурсами.

Дублирование ресурсов .Как известно, некоторые ресурсы с целью организации программных потоков дублируются. Например, так как каждому программному потоку требуется индивидуальное управление, нужен второй счетчик команд. Кроме того, необходимо ввести вторую таблицу отображения архитектурных регистров (ЕАХ, ЕВХ и т. д.) на физические регистры; аналогичным образом, дублируется контроллер прерываний, поскольку обработка прерываний для каждого потока производится индивидуально.
Жесткое разделение ресурсов между программными потоками. К примеру, если в процессоре предусмотрена очередь между двумя функциональными ступенями конвейера, то половину слотов можно отдавать потоку 1, другую половину — потоку 2. Разделение ресурсов легко реализуется, не ведет к дисбалансу и обеспечивает полную независимость программных потоков друг от друга.
Полное разделение ресурсов. В этой схеме к нужным ресурсам может получить доступ любой программный поток, а обслуживаются они в порядке поступления запросов на доступ.
Пороговое разделение ресурсов. Согласно этой схеме любой программный поток может динамически получать определенный (ограниченный) объем ресурсов.