
- •Архитектура неймановского компьютера
- •Магистральная архитектура мини- и микро- компьютеров
- •Архитектура универсальных компьютеров – мейнфреймов(селекторные, мультиплексные каналы)
- •Синхронизация пк. Деление и умножение опорной частоты
- •Кэш процессора. Кэш прямого отображения
- •Кэш процессора. Наборно-ассоциативный кэш
- •Кэш процессора. Полностью ассоциативный кэш
- •Политика записи кэШа. Уровни Кэша.
- •Ядро процессора. Понятие конвейера. Нелинейный конвейер.
- •Ядро процессора. Понятие конвейера. Конфликты в конвейере.
- •Ядро процессора. Понятие конвейера. Понятие суперскалярного процессора.
- •Сегментно-страничная организация памяти
- •Подсистема ввода-вывода. Параллельный обмен
- •Подсистема ввода-вывода. Параллельный обмен
- •Прерывания. Виды прерываний. Перехват прерываний
Ядро процессора. Понятие конвейера. Понятие суперскалярного процессора.
Ядро процессора – это его основная часть, содержащая все функциональные блоки и осуществляющая выполнение всех логических и арифметических операций. Каждое ядро процессора состоит из нескольких функциональных блоков:
блока выборки инструкций;
блоков декодирования инструкций;
блоков выборки данных;
управляющего блока;
блоков выполнения инструкций;
блоков сохранения результатов;
блока работы с прерываниями;
ПЗУ, содержащего микрокод;
набора регистров;
счетчика команд.
Каждая инструкция, выполняемая процессором, последовательно проходит все блоки ядра, в каждом из которых совершается своя часть действий, необходимых для выполнения инструкции. Если приступать к обработке новой инструкции только после завершения работы над первой инструкцией, то большая часть блоков ядра процессора в каждый момент времени будет простаивать, а, следовательно, возможности процессора будут использоваться не полностью.
Ковейеризация предполагает другой подход. По мере освобождения исполнительных устройств загружать их следующими командами из программы.
Суперскалярность – архитектура вычислительного ядра, при которой наиболее нагруженные блоки могут входить в нескольких экземплярах. Скажем, в ядре процессора блок выборки инструкций может нагружать сразу несколько блоков декодирования.
В этом случае блоки, выполняющие более сложные действия и работающие дольше, за счет параллельной обработки сразу нескольких инструкций не будут задерживать весь конвейер. Однако параллельное выполнение инструкций возможно, только если эти инструкции – независимые.
Структурная схема ядра конвейера гипотетического процессора.
На этом рисунке в каждом ядре процессора работает несколько блоков декодирования, несколько блоков выборки данных и несколько блоков выполнения инструкций.
Сегментно-страничная организация памяти
Существуют две другие схемы организации управления памятью: сегментная и сегментно-страничная. Сегменты, в отличие от страниц, могут иметь переменный размер.
Программа представляет собой набор сегментов в логическом адресном пространстве. Т.е. программа разбивается на логически законченные части - сегменты - и виртуальный адрес содержит указание на номер соответствующего сегмента. Вторая составляющая виртуального адреса - смещение относительно начала сегмента - в свою очередь, может состоять из двух полей: виртуальной страницы и индекса. Другими словами, получается, что виртуальний адрес теперь состоит из трех компонентов: сегмент, страница, индекс.
Сегментно-страничная организация памяти позволяет легко организовать совместное использование одних и тех же данных и программного кода разными задачами. Для этого различные логические блоки памяти разных процессов отображают в один и тот же блок физической памяти, где размещается разделяемый фрагмент кода или данных.
Этот способ организации виртуальной памяти вносит ещё большую задержку доступа к памяти. Необходимо сначала вычислить адрес дескриптора сегмента и прочитать его, затем вычислить адрес элемента таблицы страниц этого сегмента и извлечь из памяти необходимый элемент, и уже только после этого можно к номеру физической страницы приписать номер ячейки в странице.
достоинства сегментно-страничного способа. Разбиение программы на сегменты позволяет размещать сегменты в памяти целиком.Наличие сегментов облегчает реализацию разделения программных модулей между параллельными процессами. Возможна и динамическая компоновка задачи. А выделение памяти страницами позволяет минимизировать фрагментацию.