Э. Таненбаум - Архитектура компьютера (1127755), страница 22
Текст из файла (страница 22)
Возможны разные способы воплощения этой идеи. Самый простой из них— соединение единственной шиной нескольких процессоров и общей памяти. Схема такого мультипроцессора показана на рис. 2.7, а. Подобные системы производят многие компании. Нетрудно понять, что при наличии большого числа быстродействующих процессоров, которые постоянно пытаются получить доступ к памяти через одну и ту же шину, будут возникать конфликты. Чтобы разрешить эту проблему и повысить производительность компьютера, разработаны различные схемы. Одна из них изображена на рис. 2.7, б. В таком компьютере каждый процессор имеет собственную локальную память, недоступную для других процессоров. Эта память используется для тех программ и данных, которые не нужно разделять между несколькими процессорами. При доступе к локальной памяти основная шина не используется, и, таким образом, объем передаваемой по ней информации становится меньше.
Возможны и другие варианты решения проблемы (например, кэш-память). Мультипроцессоры имеют преимущество перед другими видами параллельных компьютеров, поскольку с единой общей памятью очень легко работать. Например, представим, что программа ищет раковые клетки на сделанном через 86 Глава 2.
Организация компьютерных систем микроскоп снимке ткани. Фотография в цифровом виде может храниться в общей памяти, при этом каждый процессор будет обследовать какую-нибудь определенную область фотографии. Поскольку каждый процессор имеет доступ к общей памяти, обследование клетки, расположенной сразу в нескольких областях, не представляет трудностей. Локальные моцули памяти Общая память Шина Шина Рис. 2.7.
Мультипроцессор с единственной шиной и общей памятью (а); мультипроцессор с собственной локальной памятью для каждого процессора (б) Мультикомпьютеры Мультипроцессоры с небольшим числом процессоров (< 256) разрабатывать достаточно просто, а вот создание больших мультипроцессоров представляет определенные трудности. Сложность заключается в том, чтобы связать все процессоры с общей памятью. Поэтому многие разработчики просто отказались от идеи разделения памяти и стали создавать системы без общей памяти, состоящие из большого числа взаимосвязанных компьютеров, у каждого из которых имеется собственная память. Такие системы называются мультикомпьютерами.
В них процессоры являются слабо связанными, в противоположность сильно связанным процессорам в мультипроцессорных системах. Процессоры мультикомпьютера отправляют друг другу сообщения (это несколько похоже на электронную почту, но гораздо быстрее). Каждый компьютер не обязательно соединять со всеми другими, поэтому обычно в качестве топологий используются двух- и трехмерные решетки, а также деревья и кольца. Хотя на пути до места назначения сообщения проходят через один или несколько промежуточных компьютеров, время передачи занимает всего несколько микросекунд.
Уже работают мультикомпьютеры, содержащие до 10 000 процессоров. Поскольку мультипроцессоры легче программировать, а мультикомпьютеры — конструировать, появилась идея создания гибридных систем, сочетатощих в себе достоинства обеих топологий. Такие компьютеры представляют иллюзию общей памяти, при этом в действительности она не существует. Мы рассмотрим мультипроцессоры и мультикомпыотеры подробнее в главе 8.
Основная память В7 Основная память Память — это тот компонент компьютера, в котором хранятся программы и данные. Можно также употреблять термин запоминающее устройство. Без памяти, откуда процессоры считывают и куда записывают информацию, не было бы цифровых компьютеров со встроенными программами. Бит Основной единицей хранения данных в памяти является двоичный разряд, который называется битом. Бит может содержать 0 или 1. Эта самая маленькая единица памяти. (Устройство, в котором хранятся только нули, вряд ли могло быть основой памяти.
Необходимы по крайней мере два значения.) Многие полагают, что в компьютерах используется бинарная арифметика, потому что это «эффективно». Они имеют в виду (хотя сами это редко осознают), что цифровая информация может храниться благодаря различию между разными величинами какой-либо физической характеристики, например напряжения или тока. Чем больше величин, которые нужно различать, тем меньше различий между смежными величинами, и тем менее надежна память.
В двоичной системе требуется различать всего две величины, следовательно, это — самый надежный метод кодирования цифровой информации. Если вы не знакомы с двоичной системой счисления, загляните в приложение А. Считается, что некоторые компьютеры, например, мэйнфреймы 1ВМ, используют и десятичную н двоичную арифметику. На самом леле здесь применяется так называемый двоично-десятичный код. Для хранения одного десятичного разряда задействуются 4 бит. Эти 4 бит дают 16 комбинаций для размещения 10 различных значений (от 0 до 9). Прн этом 6 оставшихся комбинаций не используются. Вот как выглядит число 1944 в двоично-десятичной и в чисто двоичной системах счисления (в обоих случаях используется 16 бит): + двоично-десятичное представление — 0001 1001 0100 0100; + двоичное представление — 0000011110011000. В двоично-десятичном представлении 16 бит достаточно для хранения числа от 0 до 9999, то есть доступно всего 10 000 различных комбинаций, а в двоичном представлении те же 16 бит позволяют получить 65 536 комбинаций.
Именно по этой причине говорят, что двоичная система эффективнее. Однако представим, что могло бы произойти, если бы какой-нибудь гениальный инженер придумал очень надежное электронное устройство, позволяющее хранить разряды от 0 до 9, разделив диапазон напряжения от 0 до 10 вольт на 10 интервалов. Четыре таких устройства могли бы хранить десятичное число от 0 до 9999, то есть 10 000 комбинаций. А если бы те же устройства использовались для хранения двоичных чисел, они могли бы содержать всего 16 комбинаций. Естественно, в этом случае десятичная система была бы более эффективной. 88 Глава 2.
Организация компьютерных систем Адреса памяти Память состоит из ячеек, каждая из которых может хранить некоторую порцию информации. Каждая ячейка имеет номер, который называется адресом. По адресу программы могут ссылаться на определенную ячейку. Если память содержит п ячеек, они будут иметь адреса от О до п — 1. Все ячейки памяти содержат одинаковое число бит. Если ячейка состоит из й бит, опа может содержать любую из 2Й комбинаций.
На рис. 2.8 показаны 3 различных варианта организации 96-разрядной памяти. Отметим, что соседние ячейки по определению имеют последовательные адреса. Адрес Адрес 1 ячейка Адрес ссггтт:~:тз о сспттттз, О:Ттткзз гггтттттз сштт.ш В ш:тттттз о птшттз гггтт ггп ~ — 8 сит — ~. Рис. 2.8. Три варианта организации 96-разрядной памяти В компьютерах, в которых используется двоичная система счисления (включая восьмеричное и шестнадцатеричное представление двоичных чисел), адреса памяти также выражаются в двоичных числах.
Если адрес состоит из т бит, максимальное число адресованных ячеек составит 2т. Например, адрес для обращения к памяти, изображенной на рис. 2.8, а, должен состоять по крайней мере из 4 бит, чтобы выражать все числа от О до 11. При устройстве памяти, показанном на рис. 2.8, б и 2.8, в, достаточно 3-разрядного адреса. Число бит в адресе определяет максимальное количество адресуемых ячеек памяти и не зависит от числа бит в ячейке. 12-разрядные адреса нужны и памяти из 212 ячеек по 8 бит каждая, и памяти из 212 ячеек по 64 бит каждая.
В табл. 2.1 показано число битов в ячейке памяти некоторых коммерческих компьютеров. Основная память 89 Таблице 2.1. Число бит в ячейке памяти некоторых моделей коммерческих компьютеров Число битов в ячейке Компьютер Виггооцнз В1700 1ВМ РС ОЕС РОР-8 !ВМ 1130 ОЕС РОР-18 Х08 940 12 16 18 24 Е!ес1го!оцгса Хз Х08 8!упа 9 Нопеуве!! 6180 27 32 36 СОС 3600 СОС Сувег 60 Упорядочение байтов Байты в слове могут нумероваться слева направо или справа налево. На первый взгляд может показаться, что между этими двумя вариантами нет разницы, но мы скоро увидим, что выбор имеет большое значение.
На рис. 2.9, а изображена область памяти 32-разрядного компьютера, в котором байты пронумерованы слева направо (как у компьютеров БРАКС или мэйнфреймов 1ВМ). На рис. 2.9, б показана аналогичная область памяти 32-разрядного компьютера с нумерацией байтов справа налево (как у компьютеров 1пге1). В первой из этих систем нумерация начинается с высшего порядка, в связи с чем она относится к категории компьютеров с прямым порядком следования байтов (Ь1я епбйап) — в противоположность системам с обратным порядком следования байтов (11Ые епбйап) (рис. 2.9, а). Между прочим, эти термины («Ь1я епг11ап» и «11111е епг11ап») заимствованы из «Путешествий Гулливера» Свифта — он, как мы помним, иронизировал по поводу спора политиков о том, с какого конца нужно разбивать яйца.
Впервые они были введены в научный оборот в виртуозной статье Коэна [451. Ячейка — минимальная единица памяти, к которой можно обращаться. В последние годы практически все производители выпускают компьютеры с 8-разрядными ячейками, которые называются байтами. Байты группируются в слова. В компьютере с 32-разрядными словами на каждое слово приходится 4 байт, а в компьютере с 64-разрядными словами — 8 байт. Такая единица как слово, необходима, поскольку большинство команд производят операции над целыми словами (например, складывают два слова).
Таким образом, 32-разрядная машина содержит 32-разрядные регистры и команды для манипуляций с 32-разрядными словами, тогда как 64-разрядная машина имеет 64-разрядные регистры и команды для перемещения, сложения, вычитания и других операций над 64-разрядными словами. 90 Глава 2. Организация компьютерных систем Обратный порядок следования байтов Прямой порядок следования байтов Адрес 12 12 Байты Байты — 32-разрядное слово -32-разрядное слово Рис.
2.9. Память с прямым порядком следования байтов (е); память с обратным порядком следования байтов (б) Передача с преобразованием прямого порядка следования байтов в обратный Обратный порядок следования байтов Прямой порядок следования байтов Передача с перестановкой байтов 12 12 16 16 16 Рис.
2.10. Запись данных о сотруднике для машины с прямым порядком следования байтов (е); тв же запись для машины с обратным порядком следования байтов (б); результат передачи записи с машины с прямым порядком следования байтов нв машину с обратным порядком следования байтов (в); результат перестановки байтов в предыдущем случае (г) Важно понимать, что в обеих системах 32-разрядное целое число (например, 6) представлено битами 110 в трех крайних правых битах слова, а остальные 29 бит представлены нулями.