Теоретические сведения. Архитектурой компьютера называется его описание на некотором общем уровне
Архитектурой компьютера называется его описание на некотором общем уровне, включающее описание пользовательских возможностей программирования, системы команд, системы адресации, организации памяти и т.д. Архитектура определяет принципы действия, информационные связи и взаимное соединение основных логических узлов компьютера: процессора, оперативного ЗУ, внешних ЗУ и периферийных устройств. Общность архитектуры разных компьютеров обеспечивает их совместимость с точки зрения пользователя.
Структура компьютера — это совокупность его функциональных элементов и связей между ними. Элементами могут быть самые различные устройства — от основных логических узлов компьютера до простейших схем. Структура компьютера графически представляется в виде структурных схем, с помощью которых можно дать описание компьютера на любом уровне детализации.
История вычислительной техники началась едва ли не раньше, чем окончательно сформировалась понятие числа. Неспроста в некоторых языках слово "цифра" происходит от слова "палец" - поначалу счет был неотделим от загибания пальцев. Пальцы стали первой вычислительной техникой. Великий переворот в вычислительной технике произошел с изобретением абака. Даже если вы не слышали этого слова, вы встречали, и не раз, русскую разновидность этого прибора - счеты. Абак долгое время играл особую роль в арифметике (как в геометрии - циркуль и линейка): задача считалось решенной, только если было указано, как необходимые вычисления выполнить на абаке. Существовала целая наука о счете на этой машине; особенно большой вклад в ее развитие внес французский ученый Герберт (950-1003), под конец жизни ставший папой римским Сильвестром II.
Но вычисления с развитием торговли, банковского дела, техники становились все более трудоемкими, и мысль поручить счет машине оставалось привлекательной. Многие умы занимались этой проблемой. Около 1632 году немецкий ученый Вильгельм Шиккард, профессор математики и восточных языков в Тюбингене, сконструировал первый в истории счетный механизм. Вскоре, в 1642 году, великий французский ученый Блез Паскаль (1623-1662) создал свою счетную машину, которая умела складывать и вычитать. Но другой ученый Готфнид Вильгельм Лейбниц (1646-1716) создал машину которая еще умела умножать и делить. Наконец, в первой половине XIX века англичанин Чарльз Бэббидж (1791-1871) разработал конструкцию машины, во многим причинам достойной называться первым компьютером.
Первый компьютер и был, и не был. Не был потому, что его автор Чарльз Бэббидж не смог его построить: в то время (он начал свою работу в 1834 году) подобная машина могла быть только механической. Но точность изготовления деталей была слишком высока по их меркам. Поэтому финансирование проекта прекратилась. Но все же первый компьютер был - не осуществленный, но продуманный до мелочей и тщательно вычерченный. Кроме чертежей, осталась еще и подробное словесное описание, составленной сотрудницей Бэббиджа Августой Адой Лавлейс, разработанная ею язык программирования и несколько первых в истории программ (перфокарты, машина Бэббиджа была способна выполнять программы). Его основные части были теми же, что и в каждом современном компьютере: устройства ввода данных (клавиатура); запоминающее устройство, способное хранить исходные данные; арифметическое устройство (-,+,·,:); устройство для вывода результата.
Дальнейшее развитие науки и техники позволили в 1940-х годах построить первые вычислительные машины. В феврале 1944 на одном из предприятий IBM в сотрудничестве с учеными Гарвардского университета по заказу ВМС США была создана машина "Марк-1". Это был монстр весом около 35 тонн. "Марк-1" был основан на использовании электромеханических реле и оперировал десятичными числами, закодированными на перфоленте. Машина могла манипулировать числами длиной до 23 разрядов. Для перемножения двух 23-разрядных чисел ей было необходимо четыре секунды. Но электромеханические реле работали недостаточно быстро. Поэтому уже в 1943 американцы начали разработку альтернативного варианта — вычислительной машины на основе электронных ламп. В 1946 была построена первая электронная вычислительная машина ENIAC. Ее вес составлял 30 тонн, она требовала для размещения 170 квадратных метров площади. Вместо тысяч электромеханических деталей ENIAC содержал 18 тысяч электронных ламп. Считала машина в двоичной системе и производила пять тысяч операций сложения или триста операций умножения в секунду. Но лампы часто ломались и для их замены в 1947 американцы Джон Бардин, Уолтер Браттейн и Уильям Брэдфорд Шокли предложили использовать изобретенные ими стабильные переключающие полупроводниковые элементы — транзисторы.
С активным внедрением транзисторов в 1950-х годах связано рождение второго поколения компьютеров. Один транзистор был способен заменить 40 электронных ламп. В результате быстродействие машин возросло в 10 раз при существенном уменьшении веса и размеров. В компьютерах стали применять запоминающие устройства из магнитных сердечников, способные хранить большой объем информации. В 1959 были изобретены интегральные микросхемы (чипы), в которых все электронные компоненты вместе с проводниками помещались внутри кремниевой пластинки. Применение чипов в компьютерах позволяет сократить пути прохождения тока при переключениях, и скорость вычислений повышается в десятки раз. Существенно уменьшаются и габариты машин. Появление чипа знаменовало собой рождение третьего поколения компьютеров.
В середине 1970-х годов начинают предприниматься попытки создания персонального компьютера — вычислительной машины, предназначенной для частного пользователя. Во второй половине 1970-х годов появляются наиболее удачные образцы микрокомпьютеров американской фирмы Эппл (Apple), но широкое распространение персональные компьютеры получили с созданием в августе 1981 фирмой IBM модели микрокомпьютера IBM PC. Применение принципа открытой архитектуры, стандартизация основных компьютерных устройств и способов их соединения привели к массовому производству клонов IBM PC, широкому распространению микрокомпьютеров во всем мире.
В 1993 фирма Intel объявила о начале промышленных поставок процессора Pentium с тактовой частотой 66 и 60 МГц. Системы, построенные на базе Pentium, полностью совместимы с персональными компьютерами, использующими микропроцессоры ранних поколений i8088, i80286, i80386, i80486. Новая микросхема содержала около 3,1 млн. транзисторов и имела 32-разрядную адресную и 64-разрядную внешнюю шину данных. Архитектура Pentium содержит два арифметико-логических устройства, благодаря чему две команды могут быть выполнены за один такт синхронизации. Уже первый Pentium имел два раздельных кэша по восемь килобайт: один для команд, другой — для данных. Pentium стал первым массовым процессором Intel с суперскалярной архитектурой и динамическим предсказанием переходов в исполняемых программах. При разработке Pentium была существенно повышена производительность модуля вычислений с плавающей запятой, добавлена аппаратная поддержка самотестирования, текущего контроля производительности и расширенной отладки. Благодаря встроенному в Pentium контроллеру прерываний многопроцессорных систем получили распространение двухпроцессорные серверы и рабочие станции на его основе. Первые Pentium выпускались до конца 1997. В дальнейшем фирма Интел производила модификации этого микропроцессора — Pentium 2, Pentium 3, Pentium 4.
Существуют два основных формата представления чисел в памяти компьютера. Один из них используется для кодирования целых чисел, второй (так называемое представление числа в формате с плавающей точкой) используется для задания некоторого подмножества действительных чисел.
Множество целых чисел, представимых в памяти ЭВМ, ограничено. Диапазон значений зависит от размера области памяти, используемой для размещения чисел. В k-разрядной ячейке может храниться 2k различных значений целых чисел.
Чтобы получить внутреннее представление целого положительного числа N, хранящегося в k-разрядном машинном слове, необходимо:
1) перевести число N в двоичную систему счисления;
2) полученный результат дополнить слева незначащими нулями до k разрядов.
Например, получим внутреннее представление целого числа 1607 в 2-х байтовой ячейке. Переведем число в двоичную систему: 160710 = 110010001112. Внутреннее представление этого числа в ячейке будет следующим: 0000 0110 0100 0111.
Для записи внутреннего представления целого отрицательного числа (-N) необходимо:
1) получить внутреннее представление положительного числа N;
2) обратный код этого числа заменой 0 на 1 и 1 на 0;
3) полученному числу прибавить 1.
Например, получим внутреннее представление целого отрицательного числа -1607. Воспользуемся результатом предыдущего примера и запишем внутреннее представление положительного числа 1607: 0000 0110 0100 0111. Инвертированием получим обратный код: 1111 1001 1011 1000. Добавим единицу: 1111 1001 1011 1001 - это и есть внутреннее двоичное представление числа -1607.
Формат с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления n в некоторой целой степени p, которую называют порядком: R = m * n p.
Представление числа в форме с плавающей точкой неоднозначно. Например, справедливы следующие равенства: 12.345 = 0.0012345x104 = 1234.5x10-2 = 0.12345x102.
Чаще всего в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в таком представлении должна удовлетворять условию: 0.1p <= m < 1p. Иначе говоря, мантисса меньше 1 и первая значащая цифра не ноль (p - основание системы счисления).
В памяти компьютера мантисса представляется как целое число, содержащее только значащие цифры (0 целых и запятая не хранятся), так для числа 12.345 в ячейке памяти, отведенной для хранения мантиссы, будет сохранено число 12345. Для однозначного восстановления исходного числа остается сохранить только его порядок, в данном примере - это 2.
Двоичная система счисления (двоичный код) - код, в котором для представления информации используются цепочки бит. Для представления целых чисел используются:
- прямой код - знак кодируется нулем для положительных и единицей для отрицательных. 510= 0 000101; -510= 1 000101
- обратный код (или дополнительный - дополненный до единицы) для положительных чисел совпадает с прямым кодом, а для отрицательных получается из соответствующего прямого путем поразрядного обращения каждого бита кроме знакового: -5=1 111010
Данный код позволяет унифицировать сложение и вычитание с оговоркой, что если при суммировании чисел в обратном коде длина результата превысит стандартную длину цепочки, то происходит циклический перенос старшего разряда в младший, например: (+5) +(-3)=0000101+1111100=1 "0000001"= "0000010"=210.
Для умножения и деления обратный код менее удобен, чем прямой. В основном обратный код нужен для получения дополнительного.
Дополнительный код (или дополнение до двух) для положительных чисел совпадает с прямым, а для отрицательных чисел получается из обратного кода сложением с 1. Например: -5=1 111011.
Преимущества дополнительного кода перед обратным кодом является упрощение суммирования, т.к. не возникает необходимости в циклическом переносе из старшего разряда в младший.
Множество символов, используемых при записи текста, называется алфавитом. Количество символов в алфавите называется его мощностью.
Для представления текстовой информации в компьютере чаще всего используется алфавит мощностью 256 символов. Один символ из такого алфавита несет 8 бит информации, т. к. 28 = 256. Но 8 бит составляют один байт, следовательно, двоичный код каждого символа занимает 1 байт памяти ЭВМ.
Все символы такого алфавита пронумерованы от 0 до 255, а каждому номеру соответствует 8-разрядный двоичный код от 00000000 до 11111111. Этот код является порядковым номером символа в двоичной системе счисления.
Для разных типов ЭВМ и операционных систем используются различные таблицы кодировки, отличающиеся порядком размещения символов алфавита в кодовой таблице. Международным стандартом на персональных компьютерах является уже упоминавшаяся таблица кодировки ASCII.
Принцип последовательного кодирования алфавита заключается в том, что в кодовой таблице ASCII латинские буквы (прописные и строчные) располагаются в алфавитном порядке. Расположение цифр также упорядочено по возрастанию значений.
Стандартными в этой таблице являются только первые 128 символов, т.е. символы с номерами от нуля (двоичный код 00000000) до 127 (01111111). Сюда входят буквы латинского алфавита, цифры, знаки препинания, скобки и некоторые другие символы. Остальные 128 кодов, начиная со 128 (двоичный код 10000000) и кончая 255 (11111111), используются для кодировки букв национальных алфавитов, символов псевдографики и научных символов.
Сейчас существует несколько различных кодовых таблиц для русских букв (КОИ-8, СР-1251, СР-866, Mac, ISO), причем тексты, созданные в одной кодировке, могут неправильно отображаться в другой. Решается такая проблема с помощью специальных программ перевода текста из одной кодировки в другую.
Альтернативная кодировка не подошла для ОС Windows. Пришлось передвинуть русские буквы в таблице на место псевдографики, и получили кодировку Windows 1251 (Win-1251).
В течение долгого времени понятия "байт" и "символ" были почти синонимами. Однако, в конце концов, стало ясно, что 256 различных символов - это не так много. Математикам требуется использовать в формулах специальные математические знаки, переводчикам необходимо создавать тексты, где могут встретиться символы из различных алфавитов, экономистам необходимы символы валют ($, £, ¥). Для решения этой проблемы была разработана универсальная система кодирования текстовой информации - Unicode. В этой кодировке для каждого символа отводится не один, а два байта, т.е. шестнадцать бит. Таким образом, доступно 65536 (216) различных кодов. Этого хватит на латинский алфавит, кириллицу, иврит, африканские и азиатские языки, различные специализированные символы: математические, экономические, технические и многое другое. Главный недостаток Unicode состоит в том, что все тексты в этой кодировке становятся в два раза длиннее. В настоящее время стандарты ASCII и Unicode мирно сосуществуют.
Почти все создаваемые, обрабатываемые или просматриваемые с помощью компьютера изображения можно разделить на две большие части - растровую и векторную графику. Для представления графической информации растровым способом используется так называемый точечный подход. На первом этапе вертикальными и горизонтальными линиями делят изображение. Чем больше при этом получилось элементов (пикселей), тем точнее будет передана информация об изображении. Как известно из физики, любой цвет может быть представлен в виде суммы различной яркости красного, зеленого и синего цветов. Поэтому надо закодировать информацию о яркости каждого из трех цветов для отображения каждого пикселя. В видеопамяти находится двоичная информация об изображении, выводимом на экран. Таким образом, растровые изображения представляют собой однослойную сетку точек, называемых пикселями (pixel, от англ. picture element), а код пикселя содержит информацию о его цвете.
Для черно-белого изображения (без полутонов) пиксель может принимать только два значения: белый и черный (светится - не светится), а для его кодирования достаточно одного бита памяти: 1 - белый, 0 - черный.
Пиксель на цветном дисплее может иметь различную окраску, поэтому одного бита на пиксель недостаточно. Для кодирования 4-цветного изображения требуются два бита на пиксель, поскольку два бита могут принимать 4 различных состояния. Может использоваться, например, такой вариант кодировки цветов: 00 - черный, 10 - зеленый, 01 - красный, 11 - коричневый.
На RGB-мониторах все разнообразие цветов получается сочетанием базовых цветов: красного (Red), зеленого (Green), синего (Blue), из которых можно получить 8 основных комбинаций:
R | G | B | цвет | R | G | B | цвет | |
черный | красный | |||||||
синий | пурпурный | |||||||
зеленый | желтый | |||||||
голубой | белый |
Разумеется, если иметь возможность управлять интенсивностью (яркостью) свечения базовых цветов, то количество различных вариантов их сочетаний, порождающих разнообразные оттенки, увеличивается. Количество различных цветов - К и количество битов для их кодировки - N связаны между собой простой формулой: 2N = К.
В противоположность растровой графике векторное изображение состоит из геометрических примитивов: линия, прямоугольник, окружность и т.д. Каждый элемент векторного изображения является объектом, который описывается с помощью специального языка (математических уравнения линий, дуг, окружностей и т.д.). Сложные объекты (ломаные линии, различные геометрические фигуры) представляются в виде совокупности элементарных графических объектов.
Объекты векторного изображения, в отличие от растровой графики, могут изменять свои размеры без потери качества (при увеличении растрового изображения увеличивается зернистость).
Из курса физики известно, что звук - это колебание частиц воздуха, непрерывный сигнал с меняющейся амплитудой.
При кодировании звука этот сигнал надо представить в виде последовательности нулей и единиц. Как, например, это происходит в микрофоне? Через равные промежутки времени, очень часто (десятки тысяч раз в секунду) измеряется амплитуда колебаний. Каждое измерение производится с ограниченной точностью и записывается в двоичном виде. Частота, с которой записывается амплитуда, называется частотой дискретизации. Полученный ступенчатый сигнал сначала сглаживается посредством аналогового фильтра, а затем преобразуется в звук с помощью усилителя и динамика.
Рисунок 4.1.
На качество воспроизведения закодированного звука в основном влияют два параметра: частота дискретизации - количество измерений амплитуды за секунду в герцах и глубина кодирования звука - размер в битах, отводимый под запись значения амплитуды. Например, при записи на компакт-диски (CD) используются 16-разрядные значения, а частота дискретизации равна 44032 Гц. Эти параметры обеспечивают превосходное качество звучания речи и музыки. Для стереозвука отдельно записывают данные для левого и для правого канала.
Если преобразовать звук в электрический сигнал (например, с помощью микрофона), мы увидим плавно изменяющееся с течением времени напряжение. Для компьютерной обработки такой аналоговый сигнал нужно каким-то образом преобразовать в последовательность двоичных чисел.
Поступим следующим образом. Будем измерять напряжение через равные промежутки времени и записывать полученные значения в память компьютера. Этот процесс называется дискретизацией (или оцифровкой), а устройство, выполняющее его - аналого-цифровым преобразователем (АЦП).
Рисунок 4.2.
Для того чтобы воспроизвести закодированный таким образом звук, нужно выполнить обратное преобразование (для него служит цифро-аналоговый преобразователь - ЦАП), а затем сгладить получившийся ступенчатый сигнал.
Чем выше частота дискретизации (т. е. количество отсчетов за секунду) и чем больше разрядов отводится для каждого отсчета, тем точнее будет представлен звук. Но при этом увеличивается и размер звукового файла. Поэтому в зависимости от характера звука, требований, предъявляемых к его качеству и объему занимаемой памяти, выбирают некоторые компромиссные значения.
Описанный способ кодирования звуковой информации достаточно универсален, он позволяет представить любой звук и преобразовывать его самыми разными способами. Но бывают случаи, когда выгодней действовать по-иному.
Человек издавна использует довольно компактный способ представления музыки - нотную запись. В ней специальными символами указывается, какой высоты звук, на каком инструменте и как сыграть. Фактически, ее можно считать алгоритмом для музыканта, записанным на особом формальном языке. В 1983 г. ведущие производители компьютеров и музыкальных синтезаторов разработали стандарт, определивший такую систему кодов. Он получил название MIDI.
Конечно, такая система кодирования позволяет записать далеко не всякий звук, она годится только для инструментальной музыки. Но есть у нее и неоспоримые преимущества: чрезвычайно компактная запись, естественность для музыканта (практически любой MIDI-редактор позволяет работать с музыкой в виде обычных нот), легкость замены инструментов, изменения темпа и тональности мелодии.
Заметим, что существуют и другие, чисто компьютерные, форматы записи музыки. Среди них следует отметить формат MP3, позволяющий с очень большим качеством и степенью сжатия кодировать музыку. При этом вместо 18-20 музыкальных композиций на стандартный компакт-диск (CD-ROM) помещается около 200. Одна песня занимает примерно 3,5 Mb, что позволяет пользователям сети Интернет легко обмениваться музыкальными композициями.
Контрольные вопросы
1. Как называется совокупность всех символов, используемых для представления информации на некотором языке?
2. Что такое кодирование информации и почему в нем существует необходимость?
3. Что такое алфавит системы счисления?
4. Что общего у двоичной и десятичной систем счисления и чем они отличаются?
5. Для чего используются родственные системы счисления?
6. Что такое двоичная кодировка и почему она применяется в компьютерах?
7. Как представить двоичное число в восьмеричной системе?
8. В чем достоинства и недостатки кодировки Unicode?
9. Что общего в кодировании текста, графики и звука в компьютерной системе?
10. Что называют растром? Чем отличается пиксель от точки экрана?
11. Подготовьте доклад на тему «История развития вычислительной техники»