Глава 4. АРХИТЕКТУРА ЭВМ 1 страница
Термин «архитектура» ЭВМ относительно новый. До середины семидесятых годов применялся более узкий термин «устройство» ЭВМ. Но, как правило, после рассмотрения собственно устройства машины следовало изучение способов представления программ и данных в ЭВМ, особенностей организации памяти, процессора, обмена данными и т.д. Впоследствии всю эту совокупность сведений объединили под одним общим названием — архитектура ЭВМ.
i |
Под архитектуройЭВМ понимается совокупность сведений об основных устройствах компьютера и их назначении, о способах представления программ и данных в машине, об особенностях ее организации и функционирования.
Ранее было выяснено, что различные модели вычислительных машин существенно отличаются друг от друга, поэтому для более подробного изучения выбрана архитектура наиболее популярного и широко распространенного в настоящее время семейства IBM совместимых персональных компьютеров.
Вспоминая данное выше определение компьютера, можно заметить, что основными функциями компьютера являются хранение, обработка, прием и передача данных. Для выполнения этих функций в компьютере предусмотрены различные устройства. Каждое из этих устройств выполняет ту или иную конкретную функцию, обязанность.
i |
В состав любого современного компьютера входят:
* память — группа устройств, которые обеспечивают хранение данных и программ;
* процессор— одно или несколько устройств, которые обеспечивают задаваемую программой обработку данных;
* устройства ввода/вывода — группа устройств, которые обеспечивают обмен, т.е. прием и передачу данных между пользователем и машиной или между двумя или более машинами.
Различные устройства компьютера подсоединяют друг к другу с помощью стандартизированных и унифицированных (то есть единообразных) аппаратных средств — кабелей, разъемов и т.д. При этом устройства обмениваются друг с другом информацией и управляющими сигналами, которые также приводятся к некоторым стандартным формам. Совокупность этих стандартных средств и форм образует конкретный интерфейс (interface — взаимный вид) того или иного устройства или компьютера в целом.
i |
Интерфейсом называется совокупность унифицированных стандартных соглашений, аппаратных и программных средств, методов и правил взаимодействия устройств или программ.
ОСНОВЫ ХРАНЕНИЯ ИНФОРМАЦИИ В КОМПЬЮТЕРЕ. Как было выяснено ранее, информация всегда имеет форму сообщения, а сообщение кодируется тем или иным набором знаков, символов, цифр. Теоретически и экспериментально было показано, что с технической точки зрения самым удобным и эффективным является использование двоичного кода, т.е. набора символов, алфавита, состоящего из пары цифр {0,1}. Поскольку двоичный код используется для хранения информации в вычислительных машинах, его ещё называют машинным кодом.
Цифры 0 и 1, образующие набор {0,1}, обычно называют двоичными цифрами, потому что они используются как алфавит в так называемой двоичной системе счисления. Система счисления представляет собой совокупность правил и приемов наименования и записи чисел, а также получения значения чисел из изображающих их символов. Количество знаков в алфавите системы счисления обычно отражается в ее названии: двоичная, троичная, восьмеричная, десятичная, шестнадцатиричная и т.д. Вообще говоря, можно рассматривать системы счисления с любым количеством знаков в алфавите. В настоящее время у людей общепринятой является арабская десятичная система счисления, алфавит которой состоит из десяти цифр {0,1,2,3,4,5,6,7,8,9}. Однако для использования в ЭВМ десятичная система слишком сложна, так как для ее применения необходимо подобрать технические способы изображения десяти различных цифр. С точки зрения технической реализации компьютера, гораздо проще работать всего с двумя цифрами двоичной системы {0,1}.
i |
Элементарное устройство памяти компьютера, которое применяется для изображения одной двоичной цифры, называется двоичным разрядом или битом.
Слово «бит» произошло от английского термина bit, представляющего собой сокращение словосочетания BInary digiT — двоичная цифра. Технически бит может быть реализован самыми разными способами. Однако каким именно конкретным способом это сделано в компьютере — для нас совершенно безразлично. Важно лишь понимание назначения и свойств, функций бита:
* Бит может находиться только в одном из двух возможных состояний, одно из которых принято считать изображением цифры «0», а второе — изображением цифры «1». Свое состояние бит сохраняет сколь угодно долго, пока оно не будет изменено принудительным способом. Следовательно, бит может хранитьзаписанную в нём него информацию.
* В любой момент времени можно узнать, в каком из двух состояний находится бит — в состоянии «0» или в состоянии «1», при этом исходное состояние бита останется неизменным. Другими словами, можно прочитатьзаписанную в бит информацию (без ее потери).
* Всегда, когда в этом возникнет необходимость и вне зависимости от текущего состояния, можно перевести бит из одного состояния в другое. Иначе говоря, в бит можно записать новую информацию.
Таким образом, бит обеспечивает базу для выполнения двух основных функций компьютера — хранения и обмена данными. Поскольку для того чтобы выполнить обмен, то есть принять либо передать информацию, ее нужно прочитатьв том месте, где она хранится, а затем записать на новом месте. Однако бит — это очень маленькая порция информации. Поэтому, так же как при записи десятичных чисел, используется несколько десятичных разрядов — разряд единиц, разряд десятков, сотен и т.д., так и для записи двоичных чисел используется несколько двоичныхразрядов, несколько бит.
Обратите внимание на некоторую нестрогость, многозначность в используемой терминологии. Термин «бит» так же, как и словосочетание «двоичный разряд», используется для обозначения: 1)элементарного устройства памяти компьютера; 2)двоичной цифры, которая находится в этом устройстве; 3)отдельной двоичной цифры, входящей в двоичное число, независимо от того, хранится это число в компьютере или же нет. К счастью, смысл, который вкладывается в данные термины, достаточно просто выявляется из контекста.
Для хранения двоичных чисел в компьютере используется устройство, которое принято называть ячейкойпамяти. Память компьютера можно образно представлять себе как автоматическую камеру хранения, состоящую из отдельных ячеек, в каждую из которых можно положить некоторое число. Ячейки образуются из нескольких битов, так же как двоичные числа образуются из двоичных разрядов. В общем случае ячейки различных компьютеров могут состоять из различного количества битов. Однако это создает значительные сложности для организации обмена информацией между разными моделями компьютеров. Поэтому, начиная с машин третьего поколения, стандартными являются ячейки, которые состоят из восьми битов.
i |
Элемент памяти компьютера, состоящий из восьми битов, называется байтом.
Слово «байт» произошло от английского термина byte, представляющего собой сокращение словосочетания BinarY TErm — двоичный терм, выражение. Байт сохраняет все свойства бита, т.е. он может сколь угодно долго хранить записанный в него двоичный код, этот код можно прочитать, можно также записать в байт любой новый код. Каждый из восьми битов байта может содержать любую из двоичных цифр независимо от остальных. Следовательно, байт может содержать произвольную комбинацию, последовательность из восьми нулей или единиц, например, последовательность 10110011. Такую последовательность также называют двоичным числом, двоичным кодом, либо просто кодом.
а | б |
Рис. 4.1. Условные изображения: а — бита; б — байта
Условно бит изображают в виде квадратика, содержащего либо цифру «0», либо цифру «1», а байт рисуют в виде расположенных рядом восьми одинаковых квадратиков, каждый из которых содержит какую-либо двоичную цифру (рис. 4.1).
Запись двоичного кода легко спутать с аналогичным по записи десятичным числом, например, двоичный код 10110011 можно рассматривать и как «обычное» число «десять миллионов сто десять тысяч одиннадцать». В тех случаях, когда есть опасность спутать десятичное и двоичное числа, справа от двоичного числа записывают индекс 2, а около десятичного числа указывают индекс 10. Таким образом, 101100112 — двоичное число, а 1011001110 — десятичное. Для удобства восприятия десятичные числа в текстах на русском языке принято делить на группы по три цифры в каждой и отделять эти группы друг от друга пробелом — 10 110 01110. По аналогии с этим двоичные числа иногда также группируют, но по четыре цифры в группе — 1011 00112.
Так как байт состоит из восьми двоичных разрядов, то количество различных кодов, различных комбинаций из восьми нулей и единиц, записываемых в один байт, равно 28 = 256. Для перебора всех возможных комбинаций можно начать с кода, содержащего восемь нулей 0000 00002, следующим записать код 0000 00012, затем — 0000 00102, 0000 00112 и т.д. до кода, состоящего только из одних единиц 1111 11112 . Всего таких комбинаций будет как раз 256.
Как видно из приведенных выше примеров, запись содержимого байта довольно длинная — более чем в три раза длиннее записи соответствующего числа в десятичной системе счисления. Кроме того, восприятие человеком двоичного кода затруднено. Поэтому для сокращения записи двоичных кодов часто используют вспомогательную шестнадцатиричную систему счисления. Ее алфавит состоит из шестнадцати символов {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}. Эта система связана с двоичной очень простыми правилами перехода от двоичных кодов к шестнадцатиричным и обратно —от шестнадцатиричных к двоичным. Для таких переходов используется таблица, в которой каждой шестнадцатиричной соответствуют ровно четыре двоичных цифры (табл. 4.1). Четверку двоичных цифр иногда называют тетрадой.
Таблица 4.1
Соответствие между тетрадами и шестнадцатиричными цифрами
16-я цифра | 2–я четверка | 16–я цифра | 2–я четверка | 16–я цифра | 2–я четверка | 16–я цифра | 2–я четверка |
C | |||||||
D | |||||||
A | E | ||||||
B | F |
Собственно переход от двоичных чисел к их шестнадцатиричным эквивалентам и обратно осуществляется простой заменой каждой четверки двоичных цифр кода на соответствующую ей одну шестнадцатиричную, и, наоборот, вместо одной шестнадцатиричной цифры подставляются четыре двоичных. Возьмем, например, двоичный код 0011 10112. Он состоит из двух двоичных четверок. Первая — 00112 и вторая — 10112. По таблице находим, что тетраду 00112 нужно заменить на шестнадцатиричную цифру 3, а тетраду 10112 — на шестнадцатиричную цифру B. Таким образом, двоичному коду 0011 10112 соответствует шестнадцатиричный код 3В. Во избежание недоразумений в тех случаях, когда они могут возникнуть, справа от шестнадцатиричных чисел (кодов) выставляется индекс 16 — 3В16. Приведем еще несколько примеров: — 1010 11002 соответствует коду AC16, 1110 01102 — E616 и т.д. Обратный переход также прост. Так, шестнадцатиричный код C816 после замены каждой цифры соответствующей четверкой двоичных приобретает вид 1100 10002. Из приведенных примеров видно, что запись кода сокращается ровно в четыре раза. Для записи содержимого байта двоичными цифрами нужно восемь цифр, а если для этого использовать шестнадцатиричные — то всего две. Еще раз обращаем внимание читателя на то, что в компьютере для кодирования программ и данных используется только двоичная система счисления. Шестнадцатиричная же используется только как вспомогательная, для сокращения записи двоичных кодов при письме.
При компьютерной обработке информации приходится иметь дело с числовой, текстовой, графической, звуковой и т.д. информацией. Для хранения данных различной природы применяются различные способы кодировки. Кроме того, для одной и той же разновидности информации также могут использоваться различные способы кодировки, которые отличаются друг от друга эффективностью, а также различными требованиями к ресурсам компьютера.
i |
Конкретный способ кодирования той или иной разновидности информации (данных) в компьютере принято называть форматом данных.
В общем случае термин «формат» понимается как строго определенный, исчерпывающе полный набор правил. Следовательно, в приведенном выше определении речь идет об исчерпывающем наборе правил кодирования той или иной разновидности данных.
ТЕКСТОВАЯ ИНФОРМАЦИЯ. При хранении в компьютере любой текст (документ, статья, книга) рассматривается как линейная последовательность символов. Причем промежуток между отдельными словами — пробел, переход на следующую строчку, переход на следующую страницу — также могут рассматриваться как некие специальные символы. Каждому символу из этой последовательности ставится в соответствие конкретный двоичный код, состоящий ровно из восьми двоичных разрядов. Таким образом, код каждого символа текста занимает ровно один байт памяти. И, следовательно, текст целиком занимает столько байт памяти машины, из скольких символов он состоит (включая все символы текста — пробелы, знаки препинания, специальные знаки перехода на новую строчку, на новую страницу и т.д.).
Таблица 4.2
Фрагмент кодовой таблицы
Символ | 2-й код | 16-й код | Символ | 2-й код | 16-й код |
А | 1000 0000 | Р | 1001 0000 | ||
Б | 1000 0001 | С | 1001 0001 | ||
В | 1000 0010 | Т | 1001 0010 | ||
Г | 1000 0011 | У | 1001 0011 | ||
Д | 1000 0100 | Ф | 1001 0100 | ||
Е | 1000 0101 | Х | 1001 0101 | ||
Ж | 1000 0110 | Ц | 1001 0110 | ||
З | 1000 0111 | Ч | 1001 0111 | ||
И | 1000 1000 | Ш | 1001 1000 | ||
Й | 1000 1001 | Щ | 1001 1001 | ||
К | 1000 1010 | 8A | Ъ | 1001 1010 | 9A |
Л | 1000 1011 | 8B | Ы | 1001 1011 | 9B |
М | 1000 1100 | 8C | Ь | 1001 1100 | 9C |
Н | 1000 1101 | 8D | Э | 1001 1101 | 9D |
О | 1000 1110 | 8E | Ю | 1001 1110 | 9E |
П | 1000 1111 | 8F | Я | 1001 1111 | 9F |
Списки всех используемых при записи текстов символов и соответствующих им двоичных кодов образуют так называемые кодовые таблицы. В практике программирования применяются различные кодовые таблицы. Наиболее часто используется кодовая таблица ASCII (American Standart Code for Information Interchange — стандартный американский код для обмена информацией), которая в настоящее время фактически стала общемировым стандартом. В таблицу входят коды строчных и заглавных латинских букв, коды для цифр, знаков препинания, различных математических символов, символов, которыми можно рисовать в текстах таблицы и т.д. А всего в ней зафиксированы коды для 128 различных символов. Список этих символов и соответствующие им восьмиразрядные (т.е. состоящие из восьми двоичных разрядов, цифр) двоичные коды образуют основную (базовую)кодовую таблицу ASCII. Но, как было выяснено ранее, один байт может содержать 256 различных двоичных кодов, состоящих из восьми бит. Это означает, что в стандарте ASCII задействована только половина возможных кодов. Имеются различные расширения основной кодовой таблицы ASCII, в которых задаются коды ещё для 128 символов, в том числе для и символов различных национальных алфавитов. Фрагмент одного из расширений кодовой таблицы ASCII, включающий буквы русского алфавита — кириллицы, приведен в табл. 4.2.
Таблица 4.3
Машинный код текста «КОМПЬЮТЕР»
К | О | М | П | Ь | Ю | Т | Е | Р |
8Е | 8С | 8F | 9C | 9E |
В качестве примера кодировки получим машинный код текста, состоящего из одного слова «КОМПЬЮТЕР». Этот текст состоит из 9 символов, следовательно, для его хранения требуется 9 байт памяти. Используя табл. 4.2, для каждого символа легко получить соответствующий ему двоичный код. Остается только записать найденные коды в группу подряд расположенных байтов памяти. В табл. 4.3 приведен полученный таким образом машинный код этого текста. В первой строке таблицы указаны порядковые номера байтов памяти, в которых записан текст, во второй — символы, из которых он состоит, в третьей — машинные, двоичные коды, а в четвертой — шестнадцатиричные коды этих символов. Таким образом, текст «КОМПЬЮТЕР» в вычислительной машине представлен двоичным кодом:
1000 1010 1000 1110 1000 1100 1000 1111 1001 1100 1000 1110 1001 0010 1000 0101 1001 00002.
Этот код можно сокращенно записать в шестнадцатиричном виде:
82 8E 8C 8F 9C 9E 92 85 9016.
Следует понимать, что пробелы между четверками двоичных цифр и парами шестнадцатиричных вставляются только для удобства их восприятия, чтения человеком, и в память компьютера они, естественно, не записываются.
Обратите внимание на то, что в табл. 4.2 приведены коды заглавных букв. Строчные буквы имеют другие коды. Например, код буквы «а» имеет вид 1010 00002 , в то время как код буквы «А» — 1000 00002 . Не случайно рассматриваемое слово записано именно в таком виде — машинный код слова «КОМПЬЮТЕР» отличается от машинного кода слова «компьютер».
Заметим, что знать кодовую таблицу наизусть совершенно не нужно. Только в очень редких случаях приходится пользоваться приведенными в ней кодами символов. Все необходимые преобразования от символов к их кодам и назад — от кодов к символам — производятся машиной автоматически.
Однако необходимо помнить о том, что существует много различных кодовых таблиц, и что различные программы могут использовать для записи текстов различные кодовые таблицы. А в разных кодовых таблицах один и тот же код соответствует разным символам. Так, например, двоичный код 1000 10102 соответствует символу «К» только в так называемой «Гост–альтернативной» кодовой таблице. Именно ее фрагмент приведен в табл. 4.2. А в другой популярной кодовой таблице с названием «Windows 1251» этот же двоичный код служит для обозначения символа «Љ». Следовательно, текст, записанный какой-либо программой в одной кодовой таблице, может быть полностью искажен при его чтении с помощью другой программы. Если приведенный выше код слова «КОМПЬЮТЕР» попытаться прочитать с помощью программы, которая использует кодовую таблицу «Windows1251», то этот код будет представлен «словом»: «ЉЋЊЏњћ’…ђ».
Правомерно задать вопрос: «А зачем нужны различные кодовые таблицы, раз они могут приводить к такого рода путанице?». Дело в том, что если учесть все возможные буквы, встречающиеся в национальных алфавитах европейских стран, все возможные символы, которые встречаются в математических и других специальных текстах, не говоря уже об алфавитах азиатских языков, таких как японский, корейский, китайский, то двухсот пятидесяти шести символов, которые могут быть закодированы описанным выше способом, окажется явно мало. Поэтому и разработано такое большое количество различных кодировочных таблиц.
Необходимо отметить, что в последнее время все шире используется кодовая таблица с названием UNICODE(UNIversal CODE — универсальный код), в которой для кода одного символа отводится два байта, а не один, как в рассмотренных выше таблицах. Сразу же бросается в глаза очевидный недостаток этой кодировки — требуется ровно в два раза больше места в памяти, чем при записи в однобайтных кодировках. Так, для слова «КОМПЬЮТЕР» теперь потребуется восемнадцать байтов, а не девять, как это было ранее. Но в связи с тем, что память становится все более и более дешевой, этот недостаток становится все менее и менее значимым. Кроме того, он с лихвой покрывается очевидным преимуществом: с помощью двух байтов, то есть шестнадцати разрядов, можно закодировать 216 = 65 536 различных символов, а не 28 = 256 символов однобайтных кодировок. Такого количества различных символов вполне достаточно для того, чтобы представить практически все встречающиеся во всевозможных текстах символы.
Использование кодовых таблиц для представления различных текстов в памяти компьютера решает только часть проблемы. Если более внимательно посмотреть на текст, скажем в газете, журнале или книге, то можно заметить, что практически любой текст содержит те или иные элементы оформления. Символы, из которых состоит текст, могут иметь разные размеры и разное начертание. Они могут быть наклонными, подчеркнутыми, выделенными жирным шрифтом и т.д. По-разному могут быть оформлены абзацы и страницы текста. На странице могут находиться номера, колонтитулы, сноски. Все эти, а также и многие другие элементы оформления текста при его записи в память компьютера также нуждаются в определенной кодировке.
Существует много различных форматов — конкретных способов кодирования, применяющихся для кодирования символов и фиксации элементов оформления текстов. В частности, можно упомянуть общепринятый, «понятный» подавляющему большинству работающих с текстами программ формат TXT (от слова text — текст). Этот формат основывается на одной из кодовых таблиц для представления символов текстов и практически не содержит никаких элементов его оформления. Заметим, что именно поэтому с ним могут работать очень многие программы. Значительно более сложным, но также довольно популярным является формат RTF(Rich Text Format — богатый текстовый формат), который содержит очень много различных возможностей по оформлению текстов.
ЧИСЛОВАЯ ИНФОРМАЦИЯ. В тех случаях, когда над числовыми данными приходится выполнять какие-либо математические операции, например, сложение, вычитание, умножение и т.д., применяются особые принципы кодирования. Так, кодом целого положительного десятичного числа считается его запись в двоичной системе счисления, то есть равное ему двоичное число. Так, например, кодом десятичного числа + 3710 является двоичное число 0010 01012 (или 2516). А число + 98410 выглядит как 0000 0011 1101 10012 (или 03 D916). Для отрицательных целых чисел, а также для положительных и отрицательных дробных чисел используются более сложные методы кодирования. Для перехода от десятичной системы счисления к двоичной и назад — от двоичной к десятичной — применяются достаточно сложные специальные правила, на которых мы останавливаться не будем, так как в подавляющем большинстве ситуаций эти переходы осуществляются автоматически.
В случае кодирования числовой информации одного байта для записи числа, как правило, бывает недостаточно, так как с его помощью можно записать числа только из диапазона от 010 до 25610 или же, при использовании более сложного способа кодирования, от – 12810 до + 12710. Поэтому для записи чисел, не входящих в указанные диапазоны, используется несколько соседних байтов памяти. Обычно это один, два, четыре, восемь или десять байтов. Так, объединение двух байтов позволяет работать с числами от 010 до 65 53510, а объединение четырех — с числами от 010 до 4 294 967 29510.
ГРАФИЧЕСКАЯ ИНФОРМАЦИЯ.Под графической информацией можно понимать рисунок, чертеж, фотографию, картинку в книге, изображения на экране телевизора или в кинозале и т.д. Для обсуждения общих принципов кодирования графической информации в качестве конкретного, достаточно общего случая графического объекта выберем изображение на экране телевизора. Это изображение состоит из некоторого количества горизонтальных линий — строк. А каждая строка в свою очередь состоит из элементарных мельчайших единиц изображения — точек, которые принято называть пикселами(picsel — PICture'S ELement — элемент картинки). Весь массив элементарных единиц изображения называют растром(лат. rastrum — грабли). Степень четкости изображения зависит от количества строк на весь экран и количества точек в строке, которые представляют разрешающую способность экрана или просто разрешение. Чем больше строк и точек, тем четче и лучше изображение. Достаточно хорошим считается разрешение 640 ´ 480, то есть 640 точек на строку и 480 строчек на экран.
Строки, из которых состоит изображение, можно просматривать сверху вниз друг за другом, как бы составив из них одну сплошную линию. После полного просмотра первой строки просматривается вторая, за ней третья, потом четвертая и так далее до последней строки экрана. Такой способ работы со строками называется строчной разверткой, или сканированием(scan — бегло просматривать; разлагать, развертывать изображение).А так как каждая из строк представляет собой последовательность пикселов, то все изображение, вытянутое в линию, также можно считать линейной последовательностью элементарных точек. В рассматриваемом случае эта последовательность состоит из 640 ´ 480 = 307 200 пикселов.
Вначале рассмотрим принципы кодирования монохромного изображения, то есть изображения, состоящего из любых двух контрастных цветов — черного и белого, зеленого и белого, коричневого и белого и т.д. Для простоты обсуждения будем считать, что один из цветов — чёрный, а второй — белый. Тогда каждый пиксел изображения может иметь либо черный, либо белый цвет. Поставив в соответствие черному цвету двоичный код «0», а белому — код «1» (либо наоборот), мы сможем закодировать в одном бите состояние одного пиксела монохромного изображения. А так как байт состоит из8 бит, то на строчку, состоящую из 640 точек, потребуется 80 байт памяти, а на все изображение — 38 400 байтов.
Дата добавления: 2016-01-26; просмотров: 658;