Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебники 80389

.pdf
Скачиваний:
7
Добавлен:
01.05.2022
Размер:
43.33 Mб
Скачать

зволяющие реализовать параллельное выполнение нескольких задач на одном процессоре. Такая многозадачность реализована в том или ином виде во всех современных процессорах. Отход от последовательного исполнения команд и использование нескольких исполняющих блоков в одном процессоре позволяют одновременно обрабатывать несколько процессорных микрокоманд, то есть организовывать параллелизм на уровне инст-

рукций (Instruction Level Parallelism, ILP), что, разумеется, увеличивает общую производительность.

Технология Hyper-Threading анонсированная в 2002 году компанией Intel технология Hyper-Threading – пример многопоточной обработки команд. Данная технология является чем-то средним между многопоточной обработкой, реализованной в мультипроцессорных системах, и параллелизмом на уровне инструкций, реализованном в однопроцессорных системах. Фактиче-

ски технология Hyper-Threading позволяет организовать два логических процессора в одном физическом. Таким образом, с точки зрения операционной системы и запущенного приложения в системе существует два процессора, что даёт возможность распределять загрузку задач между ними точно так же, как при SMP-мультипроцессорной конфигурации.

Посредством реализованного в технологии Hyper-Threading принципа параллельности можно обрабатывать инструкции в параллельном (а не в последовательном) режиме, то есть для обработки все инструкции разделяются на два параллельных потока. Это позволяет одновременно обрабатывать два различных приложения или два различных потока одного приложения и тем самым увеличить IPC процессора, что сказывается на росте его производительности.

В конструктивном плане процессор с поддержкой технологии HyperThreading состоит из двух логических процессоров, каждый из которых имеет свои регистры и контроллер прерываний (Architecture State, AS), а значит, две параллельно исполняемые задачи работают со своими собственными независимыми регистрами и прерываниями, но при этом используют одни и те же ресурсы процессора для выполнения своих задач. После активации каждый из логических процессоров может самостоятельно и независимо от другого процессора выполнять свою задачу, обрабатывать прерывания либо блокироваться. Таким образом, от реальной двухпроцессорной конфигурации новая технология отличается только тем, что оба логических процессора используют одни и те же исполняющие ресурсы, одну и ту же разделяемую между двумя потоками кэш-память и одну и ту же системную шину. Использование двух логических процессоров позволяет усилить процесс параллелизма на уровне потока, реализованный в современных операционных системах и высокоэффективных приложениях. Команды от обоих исполняемых параллельно потоков одновременно посылаются для обработки ядру процессора. Используя технологию out-of-order (исполнение командных инструкций не в порядке их поступления), ядро процессора тоже

91

Исполнительные
блоки
ALU
ALU
FPU
S / L
1 2 3
Циклы процессора
Рис. 4.28. Реализация параллелизма на уровне инструкций (Instruction Level Parallelism, ILP)

способно параллельно обрабатывать оба потока за счёт использования нескольких исполнительных модулей.

Идея технологии Hyper-Threading тесно связана с микроархитектурой NetBurst процессора Pentium 4 и является в каком-то смысле её логическим продолжением. Микроархитектура Intel NetBurst позволяет получить максимальный выигрыш в производительности при выполнении одиночного потока инструкций, то есть при выполнении одной задачи. Однако даже в случае специальной оптимизации программы не все исполнительные модули процессора оказываются задействованными на протяжении каждого тактового цикла. В среднем при выполнении кода, типичного для набора команд IA-32, реально используется только 35% исполнительных ресурсов процессора, а 65% исполнительных ресурсов процессора простаивают, что означает неэффективное использование возможностей процессора. Было бы вполне логично реализовать работу процессора таким образом, чтобы в каждом тактовом цикле максимально использовать его возможности. Именно эту идею и реализует технология Hyper-Threading, подключая незадействованные ресурсы процессора к выполнению параллельной задачи.

Поясним всё вышесказанное на примере. Представьте себе гипотетический процессор, в котором имеется четыре исполнительных блока: два блока для работы с целыми числами (арифметико-логическое устройство, ALU), блок для работы с числами с плавающей точкой (FPU) и блок для записи и чтения данных из памяти (Store/Load, S/L). Пусть, кроме того, каждая операция осуществляется за один такт процессора. Далее предположим, что вы-

полняется программа, состоящая из трёх инструкций: первые две - арифметические действия с це-

лыми числами, а последняя - сохранение результата. В этом случае вся программа будет выпол-

нена за два такта процессора: в первом такте задействуются два блока ALU процессора (темный квадрат на рис. 4.28), во втором - блок записи и чтения данных из памяти S/L.

В современных приложениях в любой момент времени, как правило, выполняется не одна, а несколько задач или несколько потоков (threads) одной задачи, называемых также нитями. Рассмотрим, как будет вести себя гипотетический процессор при выполнении двух разных потоков задач (рис. 4.29). Темные квадраты соответствуют использованию исполнительных блоков процессора одного потока, а квадраты со штриховкой — другого. Если бы оба потока исполнялись изолированно, то для выполнения первого и второго потока потребовалось бы по пять тактов процессора.

92

 

 

 

 

Поток А

 

 

 

 

 

 

 

Поток B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FPU

 

 

 

 

 

 

 

 

 

 

FPU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S / L

 

 

 

 

 

 

 

 

 

 

S / L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

3

 

4

 

5

 

1

 

2

 

3

 

4

 

5

 

 

Циклы процессора

 

 

 

 

Циклы процессора

 

Выполнение на процессоре без Hyper - Threading

ALU

ALU

FPU

S / L

1

2

3

4

5

6

7

8

9

10

 

 

 

Циклы процессора

 

 

 

Выполнение на процессоре c Hyper - Threading

ALU

ALU

FPU

S / L

1

2

3

4

5

Циклы процессора

 

Рис. 4.29. Выполнение двух потоков на процессоре без реализации и с реализацией технологии Hyper-Threading

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

Как видно из рис. 4.29, на каждом такте процессора используются далеко не все исполнительные блоки процессора, поэтому имеется возможность частично совместить выполнение инструкций отдельных потоков на каждом такте процессора. В нашем примере выполнение двух арифметических операций с целыми числами первого потока можно совместить с загрузкой данных из памяти второго потока и выполнить все три операции за один такт процессора. Аналогично на втором такте процессора можно совместить операцию сохранения результатов первого потока с двумя операциями второго потока и т.д. Собственно, в таком параллельном выполнении двух потоков и заключается основная идея технологии Hyper-Threading.

Конечно, описанная ситуация является довольно идеализированной, и на практике выигрыш от использования технологии Hyper-Threading куда бо-

93

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

Рассмотрим ещё один типичный пример работы нашего гипотетического процессора. Пусть имеется два потока команд, каждый из которых по отдельности выполняется за пять тактов процессора. Без использования технологии Hyper-Threading для выполнения обоих потоков потребовалось бы десять тактов процессора. А теперь выясним, что произойдет при использовании технологии Hyper-Threading (рис. 4.30). На первом такте процессора каждый из потоков задействует различные блоки процессора, поэтому выполнение инструкций легко совместить. Аналогичное положение вещей наличествует и на втором такте, а вот на третьем такте инструкции обоих потоков пытаются задействовать один и тот же исполнительный блок процессора, а именно блок S/L. В результате возникает конфликтная ситуация, и один из потоков должен ждать освобождения требуемого ресурса процессора. То же самое происходит и на пятом такте. В итоге оба потока выполняются не за пять тактов (как в идеале), а за семь.

Многоядерность.

 

 

 

Поток А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поток B

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FPU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FPU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S / L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S / L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

3

 

4

5

 

1 2 3 4

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Циклы процессора

 

 

 

 

Циклы процессора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FPU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S / L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

2

 

 

3

 

4

 

5

 

 

6

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Циклы процессора

 

 

 

 

 

 

 

 

 

 

Рис. 4.30. Возникновение конфликтных ситуаций при использовании технологии Hyper-Threading

Избежать конфликтных ситуаций, возникающих при использовании технологии Hyper-Threading, можно в том случае, если изолировать в пределах одного процессора выполнение различных потоков инструкций. Фактически для этого потребуется использовать не одно, а два и более ядер процессора. Тогда в идеальном варианте каждый поток инструкций утилизирует отведённое ему ядро процессора (и исполнительные блоки), что позволяет избежать конфликтных ситуаций и увеличить производительность процессора за счёт параллельного выполнения потоков инструкций.

94

В рассмотренном примере возникновения конфликтных ситуаций при использовании технологии Hyper-Threading применение двух независимых ядер для выполнения двух потоков инструкций позволило бы выполнить весь программный код не за семь (как в случае процессора с тех-

нологией Hyper-Threading), а за пять тактов (рис. 4.31).

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнение на про-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цессоре без Hyper -

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Threading

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FPU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S / L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнение на процессоре c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hyper - Threading

FPU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S / L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ALU

ALU

Ядро №1 FPU

S / L

Выполнение на двухядерном процессоре

ALU

ALU

Ядро №2

FPU

S / L

1

2

3

4

5

 

Циклы процессора

Рис. 4.31. Преимущество двухъядерной архитектуры процессора

95

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

Глава 5. Организация оперативной памяти

5.1. Основные принципы организации оперативной памяти

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

Основными характеристиками ЗУ являются:

емкость памяти, измеряемая в битах либо байтах;

методы доступа к данным;

быстродействие (время обращения к устройству);

надежность работы, характеризуемая зависимостью от окружающей среды и колебаний напряжения питания;

стоимость единицы памяти.

ЗУ делятся на электронные и электронно-механические. Первые базируются на интегральных схемах, характеризуются высокой стоимостью, обладают большим быстродействием, надежностью в работе. Электронномеханические устройства используют механические средства, но более экономичны и имеют большую емкость памяти. В этой связи в каждой системе создается и используется иерархия ЗУ. Последние делятся как минимум на два класса: оперативные запоминающие устройства (ОЗУ) и внешние запоминающие устройства (ВЗУ).

96

Внешние запоминающие устройства подробно рассмотрены далее. Здесь же речь пойдет об устройствах оперативной памяти.

В адресном ОЗУ каждый элемент памяти имеет адрес, соответствующий его пространственному расположению в запоминающей среде (рис. 5.1).

Кодовые шины инструкций

Кодовые шины данных

Регистр данных

Куб памяти

Дешифратор X

Регистр адреса X

 

 

 

 

 

 

 

Дешифратор Y

Регистр адреса Y

 

Регистр адреса

 

Кодовые шины адреса

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5.1.Структурная схема модуля основной памяти

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

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

Необходимо отметить, что все распространенные операционные системы, если для работы нужно больше памяти, чем физически присутствует

вкомпьютере, не прекращают работу, а сбрасывают не используемое в данный момент содержимое памяти в дисковый файл (называемый свопом - swap) и затем по мере необходимости «перегоняют» данные между ОЗУ и свопом. Это гораздо медленнее, чем доступ системы к самой ОЗУ. Поэтому от количества оперативной памяти напрямую зависит быстродействие системы в целом.

Основные принципы

Рассмотрим адресные ЗУ. Команды, исполняемые ЭВМ при выполнении программы, равно как и числовые и символьные операнды, хранятся

впамяти компьютера. Память состоит из многих миллионов ячеек, в каждой из которых содержится один бит информации (значения 0 или 1). Биты редко обрабатываются поодиночке, а как правило, группами фиксирован-

97

ного размера. Для этого память организуется таким образом, что группы по и бит могут записываться и считываться за одну операцию. Группа п бит называется словом, а значение п - длиной слова. Схематически память компьютера можно представить в виде массива слов (рис. 5.2).

Обычно длина машинного слова компьютеров составляет от 16 до 64 бит. Если длина слова равна 32 битам, в одном слове может храниться 32разрядное число в дополнительном коде или четыре символа ASCII, занимающих 8 бит каждый.

а)

b31 b30

 

 

 

b1 b0

 

 

 

 

 

 

 

 

 

 

Знаковый разряд: b31

= 0 для положительных чисел

 

 

 

b31

= 1 для отрицательных чисел

 

 

 

 

 

 

 

 

б)

 

8 разрядов

8 разрядов

 

8 разрядов

8 разрядов

 

 

 

 

 

 

 

 

 

Символ ASCII Символ ASCII Символ ASCII Символ ASCII

Рис. 5.2. Размещениечисловой(в) исимвольной (б) информациив слове

Восемь идущих подряд битов являются байтом. Для представления машинной команды требуется одно или более слов:

Для доступа к памяти с целью записи или чтения отдельных элементов информации, будь то слова или байты, необходимы имена или адреса, определяющие их расположение в памяти. В качестве адресов традиционно используются числа из диапазона от 0 до 2k - 1 со значением k, достаточным для адресации всей памяти компьютера. Все 2k адресов составляют адресное пространство компьютера. Следовательно, память состоит из 2k адресуемых элементов. Например, использование 24-разрядных (как в процессоре 80286) адресов позволяет адресовать 224 (16 777 216) элементов памяти. Обычно это количество адресуемых элементов обозначается как 16 Мбайт (1 Мбайт = 220 = 1 048 576 байт, адресное пространство 8086 и 80186). Поскольку у процессоров 80386, 80486, Pentium и их аналогов 32-разрядные адреса, им соответствует адресное пространство из 232 байт, или 4 Гбайт элементов.

Байтовая адресация. Итак, отдельные биты, как правило, не адресуются и чаще всего адреса назначаются байтам памяти. Именно так адресуется память большинства современных компьютеров. Память, в которой каждый байт имеет отдельный адрес, называется памятью с байтовой адресацией. Последовательные байты имеют адреса 0, 1, 2 и т. д. Таким образом, при использовании слов длиной 32 бита последовательные слова имеют адреса 1, 4,. 8,.., и каждое, слово состоит из 4 байт.

Прямой и обратный порядок байтов. Существует два способа адре-

сации байтов в словах:

в прямом порядке (рис. 5.3,a);

в обратном порядке (рис. 5.3, б).

98

Адрес

 

Адрес байта

 

Адрес

 

Адрес байта

 

слова

 

 

слова

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

1

2

3

0

3

 

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

4

4

 

5

6

7

4

7

 

6

5

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2k-4

2k-4

2k-3

2k-2

2k-1

2k-4 2k-1

2k-2

2k-3

2k-4

 

 

 

 

 

 

 

 

 

 

 

 

а)

 

 

а)

Рис. 5.3. Способы адресации байтов в ОЗУ

Обратным порядком байтов (big-endian) называется система адресации, при которой байты адресуются слева направо, так что самый старший байт слова (расположенный с левого края) имеет наименьший адрес.

Прямым порядком байтов (little-endian) называется противоположная система адресации, при которой байты адресуются справа налево, так что наименьший адрес имеет самый младший байт слова (расположенный с правого края). Слова «старший» и «младший» определяют вес бита, т. е. степень двойки, соответствующей данному биту, когда слово представляет число. В ПЭВМ на основе 80x86 используется прямой порядок, а в ПЭВМ на основе. Motorola 68000 - обратный. В обеих системах адреса байтов 0, 4, 8 и т. д. применяются в качестве адресов последовательных слов памяти в операциях чтения и записи слов.

Наряду с порядком байтов в слове важно также определить порядок битов в байте. Наиболее естественный порядок битов для кодирования числовых данных (непосредственно соответствующий их разрядам) «слева направо»: b32, ..., bl, b0. Однако существуют компьютеры, для которых характерен обратный порядок битов.

Расположение слов в памяти. В случае 32-разрядных слов их естественные границы располагаются по адресам 0, 4, 8 и т. д. При этом считается, что слова выровнены по адресам в памяти. Если говорить в общем, слова считаются выровненными в памяти в томслучае, если адрес начала каждого слова кратен количеству байтов в нем. По практическим причинам, связанным с манипулированием двоично-кодированными адресами, количество байтов в слове обычно является степенью двойки. Поэтому, если длина слова равна 16 бит (2 байтам), выровненные слова начинаются по байтовым адресам 0, 2, 4, ..., а если она равна 64 бит (23 т. е. 8 байтам), то выровненные слова начинаются по байтовымадресам0, 8, 16, ... .

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

Доступ к числам, символам и символьным строкам. Обычно чис-

99

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

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

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

Операнды и результаты также должны пересылаться между памятью и процессором. Таким образом, для выполнения команды программы необходимо произвести две операции с памятью:

Load (также Read, или Fetch) - загрузка (или чтение, или выборка соответственно);

Store (или Write) - сохранение (или запись).

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

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

Основная память

Память, хранящая обрабатываемые в текущее время данные и выполняемые команды (программу), называется основной памятью - RAM (Random Access Memory), т. е. память с произвольным доступом. Она составляет основу системной памяти. В ПК в большинстве случаях основная оперативная память строится на микросхемах динамического типа

100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]