- •Обработка данных
- •Вентили и триггеры
- •Другие методы хранения данных
- •Шестнадцатеричная система счисления
- •Основная память
- •Массовая память
- •Магнитные диски
- •Компакт-диски
- •Магнитная лента
- •Сохранение и считывание файлов
- •Представление числовых значений
- •Представление изображений
- •Представление целых чисел
- •Двоичный дополнительный код
- •Сложение чисел в двоичном дополнительном коде
- •Двоичная нотация с избытком
- •Наиболее распространенные типы цп
- •Интерфейс между цп и основной памятью
- •Машинные команды
- •Команды передачи данных
- •Арифметические и логические команды
- •Команды управления
- •Концепция хранимой программы
- •Представление машинных команд в виде битовых комбинаций
- •Машинный язык
- •Коды операций
- •Операнды
- •Пример программы
- •Сравнение производительности компьютеров
- •Пример выполнения программы
- •Программы и данные
- •Операции сдвига
- •Арифметические операции
- •Скорость передачи данных
- •Конструкция шины
- •Cisc- и risc-архитектура компьютеров
- •Конвейерная обработка
- •Многопроцессорные машины
- •Машинный язык
Сравнение производительности компьютеров
Приступив к поиску подходящего персонального компьютера, вы обнаружите, что зачастую частота сигнала синхронизации (тактовая частота компьютера) используется для сравнения производительности различных вычислительных машин. Частота синхронизации, задается компьютерными часами, которые представляют собой генератор электрических колебаний. Импульсы сигнала синхронизации предназначены для согласования всех действий в компьютере: чем выше частота импульсов синхронизации, тем быстрее машина выполняет введенные в нее задания. Частота сигналов синхронизации измеряется в герцах (сокращенно Гц); 1 Гц соответствует выполнению одного цикла (или появлению одного импульса) за секунду. Частота синхронизирующего сигнала в обычном компьютере колеблется в диапазоне от единиц до сотен и тысяч мегагерц (МГц); 1 МГц равен одному миллиону герц.
К сожалению, центральные процессоры производятся многими фирмами, каждая из которых устанавливает собственный объем работы, выполняемой за один цикл синхронизации. По этой причине сравнение производительности работы по частоте синхронизации для центральных процессоров, имеющих разные конструкции, следует считать неадекватным. Если необходимо сравнить производительность компьютера, в котором установлен процессор типа PowerPC, с компьютером, имеющим ЦП типа Pentium, то разумнее будет выполнить измерение показателей производительности с помощью специальных тестовых заданий (benchmark). В этом случае сравнивается реальная скорость выполнения каждым из компьютеров одного и того же задания, называемого тестовым. Подобрав тестовое задание, которое может служить эталоном для некоторого типа приложений, мы получим инструмент сравнения, позволяющий получить осмысленную оценку коммерческих продуктов, представленных в некотором сегменте рынка. Следует отметить, что очень часто компьютер, демонстрирующий наилучшую производительность для одного класса приложений, не является таковым для приложений иного типа.
Пример выполнения программы
Давайте проследим за выполнением всех машинных циклов, предусматриваемых программой, текст которой представлен в конце раздела “Машинный язык”. Вначале необходимо разместить программу в какой-либо области памяти машины. Например, будем считать, что текст нашей программы занесен в последовательные ячейки памяти, начиная с адреса А0 (шестнадцатеричное представление). На рис. 2.7 представлена таблица, отражающая содержимое этой области памяти. Если записать программу таким способом, можно заставить машину выполнить нашу программу, поместив адрес ее первой команды (А0) в счетчик адреса и запустив машину в работу.
Адрес |
Содержимое |
А0 |
15 |
А1 |
6С |
А2 |
16 |
A3 |
6D |
А4 |
50 |
А5 |
56 |
А6 |
30 |
А7 |
6Е |
А8 |
С0 |
А9 |
00 |
Рис 2.7 Программа сложения чисел, записанная в память машины, начиная с адреса А0
Блок управления начинает с извлечения из основной памяти команды, записанной по адресу А0, и помещает ее (156С) в регистр команды, выполнив тем самым этап выборки первого машинного цикла. Обратите внимание, что длина команды составляет шестнадцать разрядов (2 байта). Поэтому выбираемая команда должна занимать две ячейки памяти с адресами А0 и А1. Конструкция блока управления разработана с учетом этой особенности, поэтому он выбирает содержимое обеих ячеек и помещает данные в регистр команды, размер, которого составляет 16 бит. Затем блок управления добавляет число 2 к значению в счетчике адреса, чтобы содержимое этого регистра представляло собой адрес следующей команды. По завершении этапа выборки первого машинного цикла в счетчике адреса и регистре команд будут содержаться следующие данные:
Счетчик адреса: А2
Регистр команд: 15 6С
На следующем этапе блок управления анализирует команду, помещенную в регистр команд, и приходит к заключению, что это команда загрузки в регистр 5 содержимого ячейки памяти с адресом 6С. Загрузка осуществляется на этапе выполнения данного машинного цикла, после чего блок управления начнёт новый машинный цикл.
Новый цикл начинается с выборки команды 166D из ячеек памяти с адресами А2 и A3. Блок управления помещает эту команду в регистр команд и увеличивает значение счетчика адреса, после чего оно становится равным А4. После завершения очередного этапа выборки в счетчике адреса и регистре команд будут следующие данные:
Счетчик адреса: А4
Регистр команд: 16 6D
Блок управления декодирует команду 166D и определяет, что в регистр 6 необходимо загрузить содержимое ячейки памяти с адресом 6D, после чего выполняет команду, и в регистр 6 действительно загружается требуемое значение.
Поскольку в данный момент счетчик адреса имеет значение А4, блок управления считывает следующую команду, которая начинается с указанного адреса. В результате в регистр команд помещается значение 5056, а счетчик адреса получает новое значение А6. Блок управления декодирует содержимое очередной команды и выполняет ее посредством активизации электронной схемы сложения чисел в дополнительном двоичном коде, указав этой схеме использовать как входные регистры 5 и 6.
На этапе выполнения данной команды арифметико-логический блок выполняет сложение и записывает результат в регистр 0 (как было указано блоком управления), после чего сообщает блоку управления о том, что требуемые действия выполнены. После этого блок управления начинает следующий машинный цикл. И вновь, используя текущее значение в счетчике адреса, он выбирает следующую команду из двух смежных ячеек памяти с адресами А6 и А7 (теперь это команда 306Е) и модифицирует значение счетчика адреса, установив его равным А8. Затем считанная из памяти команда декодируется и выполняется. В результате сумма двух чисел помещается в ячейку памяти с адресом 6Е.
Следующая выбираемая команда расположена в памяти, начиная с адреса А8. После ее извлечения значение счетчика адреса увеличивается до АА. Содержимое регистра команд равно С000 и расшифровывается как команда останова. В результате работа машины останавливается на этапе выполнения, и это означает, что выполнение нашей программы завершено.
В заключение скажем, что выполнение хранимой в памяти программы не отличается от того процесса, к которому мог бы прибегнуть любой человек, перед которым поставлена задача четко следовать определенному списку инструкций. Обычно человек отмечает в списке выполненные им инструкции галочками — машина же для этого использует счетчик адреса. Определив, какая из инструкций должна выполняться следующей, человек знакомится с ней и принимает решение, что именно нужно сделать. Затем он выполняет требуемые действия и переходит к следующей инструкции. Аналогичным образом поступает и машина — она выполняет очередную команду, помещенную в регистре команд, и запускает следующий цикл выборки.