ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6690
Скачиваний: 8
Основная память 73
2D, 3D, деревья и кольца. Чтобы послания могли дойти до места назначения, они
должны проходить через один или несколько промежуточных компьютеров. Тем
не менее время передачи занимает всего несколько микросекунд. Сейчас создаются
и запускаются в работу мультикомпьютеры, содержащие около 10 000 процессоров.
Поскольку мультипроцессоры легче программировать, а мультикомпьютеры —
конструировать, появилась идея создания гибридных систем, которые сочетают
в себе преимущества обоих видов машин. Такие компьютеры представляют иллю-
зию разделенной памяти, при этом в действительности она не конструируется и не
требует особых денежных затрат. Мы рассмотрим мультипроцессоры и мульти-
компьютеры подробнее в главе 8.
Основная память
Память
— часть компьютера, где хранятся программы и данные. Можно также упо-
треблять термин «запоминающее устройство». Без памяти, откуда процессоры счи-
тывают и куда записывают информацию, не было бы цифровых компьютеров со
встроенными программами.
Бит
Основной единицей памяти является двоичный разряд, который называется
битом.
Бит может содержать 0 или 1. Эта самая маленькая единица памяти. (Устройство,
в котором хранятся только нули, вряд ли могло быть основой памяти. Необходи-
мы по крайней мере две величины.)
Многие полагают, что в компьютерах используется бинарная арифметика, по-
тому что это «эффективно». Они имеют в виду (хотя сами это редко осознают),
что цифровая информация может храниться благодаря различию между разными
величинами какой-либо физической характеристики, например напряжения или
тока. Чем больше величин, которые нужно различать, тем меньше различий между
смежными величинами и тем менее надежна память. Двоичная система требует
различения всего двух величин, следовательно, это самый надежный метод коди-
рования цифровой информации. Если вы не знакомы с двоичной системой счис-
ления, смотрите Приложение А.
Считается, что некоторые компьютеры, например большие IBM, используют
и
десятичную, и двоичную арифметику. На самом деле здесь применяется так назы-
ваемый
двоично-десятичный код.
Для хранения одного десятичного разряда ис-
пользуется 4 бита. Эти 4 бита дают 16 комбинаций для размещения 10 различных
значений (от 0 до 9). При этом 6 оставшихся комбинаций не используются. Ниже
показано число 1944 в двоично-десятичной и чисто двоичной системах счисления;
в обоих случаях используется 16 битов:
десятичное: 0001 10010100 0100 двоичное: 0000011110011000
16 битов в двоично-десятичном формате могут хранить числа от 0 до 9999, то есть
всего 10000 различных комбинаций, а 16 битов в двоичном формате — 65536 комби-
наций. Именно по этой причине говорят, что двоичная система эффективнее.
74
Глава 2. Организация компьютерных систем
Однако представим, что могло бы произойти, если бы какой-нибудь гениаль-
ный молодой инженер придумал очень надежное электронное устройство, кото-
рое могло бы хранить разряды от 0 до 9, разделив участок напряжения от 0 до 10 В
на 10 интервалов. Четыре таких устройства могли бы хранить десятичное число от
0 до 9999, то есть 10 000 комбинаций. А если бы те же устройства использовались
для хранения двоичных чисел, они могли бы содержать всего 16 комбинаций. Есте-
ственно, в этом случае десятичная система была бы более эффективной.
Адреса памяти
Память состоит из ячеек, каждая из которых может хранить некоторую порцию
информации. Каждая ячейка имеет номер, который называется адресом, По адре-
су программы могут ссылаться на определенную ячейку. Если память содержит п
ячеек, они будут иметь адреса от 0 до п-1. Все ячейки памяти содержат одинако-
вое число битов. Если ячейка состоит из к битов, она может содержать любую из
2
к
комбинаций. На рис. 2.8 показаны 3 различных способа организации 96-битной
памяти. Отметим, что соседние ячейки по определению имеют последовательные
адреса.
Адрес
Адрес
1 ячейка
Адрес
0
1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
5
6
7
I I
0 L
|
1 I
2С
|
з I
| |
4
| |
5 | _
-16 битов-
в
12 битов
б
-8 битов
а
Рис.
2.6. Три способа организации 96-битной памяти
В компьютерах, где используется двоичная система счисления (включая восьме-
ричное и шестнадцатеричное представление двоичных чисел), адреса памяти
также выражаются в двоичных числах. Если адрес состоит из m битов, максималь-
ное число адресованных ячеек будет составлять 2
П|
. Например, адрес для обра-
щения к памяти, изображенной на рис. 2.8,
а,
должен состоять по крайней мере из
Основная память 75
4 битов, чтобы выражать все числа от 0 до 11. При устройстве памяти, показанном
на рис. 2.8,
6
и 2.8,
в,
достаточно 3-битного адреса. Число битов в адресе определя-
ет максимальное количество адресованных ячеек памяти и не зависит от числа
битов в ячейке. 12-битные адреса нужны и памяти с 2
12
ячеек по 8 битов каждая,
и памяти с 2
12
ячеек по 64 бита каждая.
В табл. 2.1 показано число битов в ячейке для некоторых коммерческих компью-
теров.
Таблица 2 . 1 . Число битов в ячейке для некоторых моделей коммерческих компьютеров
Компьютер Число битов в ячейке
Burroughs B1700
IBM PC
DECPDP-8
IBM 1130
DECPDP-15
XDS 940
Electrologica X8
XDS Sigma 9
Honeywell 6180
CDC 3600
CDC Syber
1
8
12
16
18
24
27
32
36
48
60
Ячейка— минимальная единица, к которой можно обращаться, В последние
годы практически все производители выпускают компьютеры с 8-битными ячей-
ками, которые называются байтами, Байты группируются в
слова.
Компьютер с
32-битными словами имеет 4 байта на каждое слово, а компьютер с 64-битными
словами — 8 байтов на каждое слово. Такая единица, как слово, необходима, по-
скольку большинство команд производят операции над целыми словами (напри-
мер, складывают два слова). Таким образом, 32-битная машина будет содержать
32-битные регистры и команды для манипуляций с 32-битными словами, тогда
как 64-битная машина будет иметь 64-битные регистры и команды для перемеще-
ния, сложения, вычитания и других операций над 64-битными словами.
Упорядочение байтов
Байты в слове могут нумероваться слева направо или справа налево. На первый
взгляд может показаться, что между этими двумя вариантами нет разницы, но
мы скоро увидим, что выбор имеет большое значение. На рис. 2.9,
а
изображена
часть памяти 32-битного компьютера, в котором байты пронумерованы слева на-
право (как у компьютеров SPARC или больших IBM). Рисунок 2.9,
6
показывает
аналогичную репрезентацию 32-битного компьютера с нумерацией байтов справа
налево (как у компьютеров Intel).
Важно понимать, что в обеих системах 32-битное целое число (например, 6)
представлено битами 110 в трех крайних правых битах слова, а остальные 29 битов
76
Глава 2. Организация компьютерных систем
представлены нулями. Если байты нумеруются слева направо, биты 110 находят-
ся в байте 3 (или 7, или 11 и т. д.). Если байты нумеруются справа налево, биты 110
находятся в байте 0 (или 4, или 8 и т. д.). В обоих случаях слово, содержащее это
целое число, имеет адрес 0.
Адрес
О
4
в
12
Обратный
порядок байтов
Прямой
порядок байтов
0
4
8
12
1
5
9
13
2
6
10
14
3
7
11
15
3
7
11
15
2
6
10
14
1
5
9
13
0
4
8
12
Адрес
0
4
8
12
Байт
Байт
32-битное слово
а
32-битное слово
6
Рис.
2.9. Память с нумерацией байтов слева направо (а),
память с нумерацией байтов справа налево (б)
Если компьютеры содержат только целые числа, никаких сложностей не возни-
кает. Однако многие прикладные задачи требуют использования не только целых
чисел, но и цепочек символов и других типов данных. Рассмотрим, например, про-
стую запись данных персонала, состоящую из цепочки символов (имя сотрудника)
и двух целых чисел (возраст и номер отдела). Цепочка символов завершается одним
или несколькими байтами 0, чтобы заполнить слово. На рис. 2.10, а представлена
схема с нумерацией байтов слева направо, а на рис. 2.10,
б
— с нумерацией байтов
справа налево для записи «Jim Smith, 21 год, отдел 260» (1x256+4=260).
Обратный
порядок байтов
Прямой
порядок байтов
Преобразование
из обратного
порядка в прямой
Преобразование
и перестановка
0
4
В
12
16
J
S
Н
0
0
I
м
0
0
0
м
I
0
0
1
т
0
21
4
т
0
0
0
м
I
0
0
0
I
м
0
0
1
J
S
н
21
4
0
4
8
12
16
Т
0
21
4
М
I
0
0
1
I
м
0
0
0
J
S
н
0
0
J
S
н
0
0
I
м
0
0
0
м
I
0
0
1
т
0
21
4
о
4
8
12
16
Рис. 2.10.
Запись данных сотрудника для машины с нумерацией байтов слева направо (а);
та же запись для машины с нумерацией байтов справа налево {б), результат
преобразования записи из нумерации слева направо в нумерацию справа
налево (в); результат перестановки байтов в предыдущем случае (г)
Оба эти представления хороши и внутренне последовательны. Проблемы на-
чинаются тогда, когда один из компьютеров пытается переслать эту запись на Дру-
гой компьютер по сети. Предположим, что машина с нумерацией байтов слева на-
Основная память 77
право пересылает запись на компьютер с нумерацией байтов справа налево по од-
ному байту, начиная с байта 0 и заканчивая байтом 19. Для простоты будем счи-
тать, что биты не инвертируются при передаче. Таким образом, байт 0 переносится
из первой машины на вторую в байт 0 и т. д., как показано на рис. 2.10,
в.
Компьютер, получивший запись, имя печатает правильно, но возраст получа-
ется 21х2
24
, и номер отдела тоже искажается. Такая ситуация возникает, поскольку
при передаче записи порядок букв в слове меняется так, как нужно, но при этом поря-
док байтов целых чисел тоже изменяется, что приводит к неверному результату.
Очевидное решение этой проблемы — наличие программного обеспечения, ко-
торое инвертировало бы байты в слове после того, как сделана копия. Результат
такой операции изображен на рис. 2.10,
г.
Мы видим,
что
числа стали правильны-
ми, но цепочка символов превратилась в «MIJTIMS», при этом «Н» вообще поме-
стилась отдельно. Цепочка переворачивается потому, что компьютер сначала счи-
тывает байт 0 (пробел), затем байт 1 (М) и т. д.
Простого решения не существует. Есть один способ, но он неэффективен. (Нуж-
но перед каждой единицей данных помещать заголовок, информирующий, какой
тип данных последует за ним — цепочка, целое число и т. д. Это позволит компью-
теру-получателю производить только необходимые преобразования.) Ясно, что
отсутствие стандарта упорядочивания байтов является главным неудобством при
обмене информацией между разными машинами.
Код с исправлением ошибок
Память компьютера время от времени может делать ошибки из-за всплесков на-
пряжения на линии электропередачи и по другим причинам. Чтобы бороться с та-
кими ошибками, используются коды с обнаружением и исправлением ошибок. При
этом к каждому слову в памяти особым образом добавляются дополнительные биты.
Когда слово считывается из памяти, эти биты проверяются на наличие ошибок.
Чтобы понять, как обращаться с ошибками, необходимо внимательно изучить,
что представляют собой эти ошибки. Предположим, что слово состоит из m битов
данных, к которым мы прибавляем г дополнительных битов (контрольных разрядов).
Пусть общая длина слова будет п (то есть п=т+г). n-битную единицу, содержащую m
битов данных и
г
контрольных разрядов, часто называют
кодированным словом.
Для любых двух кодированных слов, например 10001001 и 10110001, можно
определить, сколько соответствующих битов в них различается. В данном примере
таких бита три. Чтобы определить количество различающихся битов, нужно над дву-
мя кодированными словами произвести логическую операцию ИСКЛЮЧАЮЩЕЕ
ИЛИ и сосчитать число битов со значением 1 в полученном результате. Число
битовых позиций, по которым различаются два слова, называется
интервалом Хэм-
минга.
Если интервал Хэмминга для двух слов равен d, это значит, что достаточно
d битовых ошибок, чтобы превратить одно слово в другое. Например, интервал
Хэмминга кодированных слов 11110001 и 00110000 равен 3, поскольку для пре-
вращения первого слова во второе достаточно 3 ошибок в битах.
Память состоит из m-битных слов, и следовательно, существует
2
т
вариантов
сочетания битов. Кодированные слова состоят из п битов, но из-за способа под-