То, что происходит дальше в этой схеме, зависит от сложности интерфейса клавиатуры. Аппаратное обеспечение может предусматривать для каждой клавиши один бит оперативной памяти. Память RAM будет адресоваться счетчиком, а содержимым этой памяти может стать 0, если клавиша не нажата, и 1 — если нажата. Эту память RAM также может считывать микропроцессор для определения состояния каждой из клавиш.
Одна из полезных функций интерфейса клавиатуры — сигнал прерывания. Как вы помните, микропроцессор 8080 предусматривает входной сигнал, который позволяет внешнему устройству прерывать работу микропроцессора. В ответ на этот сигнал процессор считывает команду из памяти. Обычно это команда RST, заставляющая процессор перейти к определенной ячейке, где хранится программа для обработки прерывания.
Последнее периферийное устройство, которое опишу в этой главе, — устройство для долговременного хранения данных. Как вы помните, оперативная память вне зависимости от того, из чего она собрана (реле, вакуумных ламп или транзисторов), теряет свое содержимое при отключении питания. По этой причине компьютеру требуется устройство для долговременного хранения данных. Один проверенный временем способ — пробивание отверстий в бумажных или картонных картах, вроде перфокарт IBM. На заре эры небольших компьютеров для сохранения и последующей загрузки программ и данных отверстия пробивались в рулонах бумажной ленты.
Недостатки перфокарт и бумажной ленты в том, что их нельзя использовать повторно. Пробитое отверстие непросто заклеить. Еще один дефект — невысокая эффективность. Сейчас, если вы можете увидеть бит невооруженным глазом, можете с уверенностью сказать: «Он занимает слишком много места!»
По этим причинам гораздо чаще встречаются магнитные накопители. Принцип их работы был описан еще в 1878 году американским инженером Оберлином Смитом (1840–1926). Однако первое работающее устройство было создано только 20 лет спустя, в 1898 году, датским изобретателем Вальдемаром Поульсеном (1869–1942). Поначалу «телеграфон» Поульсена предназначался для записи телефонных сообщений, если никто не мог взять трубку. Для записи звука на стальной проволоке применялся электромагнит — вездесущее устройство, с которым мы познакомились, когда рассматривали телеграф. Электромагнит намагничивал проволоку в соответствии с изменениями формы звуковой волны, а для воспроизведения звука проволока с той же скоростью протягивалась вдоль обмоток электромагнита, индуцируя в них ток. Электромагнит, созданный для хранения и считывания информации, называется головкой вне зависимости от типа магнитного накопителя.
В 1928 году австрийский изобретатель Фриц Пфлеумер (1881–1945) запатентовал магнитное записывающее устройство, в котором использовалась бумажная лента с металлическим напылением, сделанная по технологии, разработанной для металлизированных полосок на сигаретах. Вскоре бумагу заменила более прочная ацетилцеллюлозная основа, благодаря чему родился один из самых надежных и хорошо известных носителей информации. Магнитная лента, теперь упакованная в пластиковые кассеты, нашла применение в записи и воспроизведении музыки и видео.
Первая коммерческая система для записи цифровых компьютерных данных на магнитную ленту была представлена компанией Remington Rand в 1950 году. В то время на катушке ленты шириной в полдюйма (1,27 сантиметра) могло поместиться несколько мегабайт. На заре эры домашних компьютеров люди превращали обычные кассетные магнитофоны в устройства для записи. С помощью небольших программ содержимое блока памяти записывалось на ленту, а позднее считывалось с нее. Первые компьютеры IBM PC предусматривали разъем для кассетного накопителя. Магнитная лента употреблялась для долгосрочного архивирования данных. Тем не менее этот носитель не идеален из-за невозможности быстрого перехода к нужному месту на ленте. Обычно для этого требуется перемотать ее вперед или назад, а это занимает время.
Носителем, обеспечивающим более быстрый доступ к данным, является диск. Сам диск вращается вокруг своей оси, пока над ним перемещается штанга с одной или несколькими головками, благодаря чему доступ к любой области диска осуществляется очень быстро.
Магнитные диски фактически использовались для звукозаписи еще до магнитной ленты. Однако первый диск для хранения компьютерных данных был изобретен в компании IBM в 1956 году. Дисковая система памяти RAMAC (Random Access Method for Accounting and Control) содержала 50 металлических дисков диаметром 60 сантиметров и могла хранить пять мегабайт.
С тех пор размер дисков значительно уменьшился, а емкость увеличилась. Диски обычно делятся на гибкие (floppy, дискеты) и жесткие (hard, несъемные диски). Дискета — это пластиковый диск, заключенный в корпус (корпус поначалу делали картонным, затем — пластиковым). Пластиковый корпус не дает дискете гнуться, поэтому она уже не такая гибкая, как раньше, хотя и продолжает называться гибким диском. Для записи и чтения данных с дискеты ее необходимо поместить в специальное устройство под названием флоппи-дисковод. Диаметр первых гибких дисков составлял около 20 сантиметров. В первых компьютерах IBM PC устанавливались гибкие диски диаметром около 13 сантиметров; затем дискеты диаметром около девяти сантиметров. Возможность извлекать эти гибкие диски из дисковода позволяет с их помощью переносить данные с одного компьютера на другой. Кроме того, на дискетах распространялось коммерческое программное обеспечение.
Жесткий диск обычно состоит из нескольких металлических дисков, встроенных в дисковод. Как правило, жесткие диски работают быстрее и вмещают больше данных, чем дискеты, однако их невозможно извлечь.
Поверхность диска разделена на концентрические кольца, называемые дорожками. Каждая дорожка разделена на сектора, которые хранят определенное количество данных, обычно 512 байт. Флоппи-дисковод первого компьютера IBM PC использовал лишь одну сторону 13-сантиметровой дискеты и разделял ее на 40 дорожек по восемь секторов, каждый из которых хранил 512 байт. Таким образом, на каждой дискете находились 163 840 байт, или 160 килобайт. Дискеты 3,5 дюйма, использовавшиеся в PC-совместимых компьютерах, имели две стороны по 80 дорожек и по 18 секторов на дорожку. Каждый сектор такой дискеты хранил 512 байт, что обеспечивало общую емкость в 1 474 560 байт, или 1440 килобайт.
Емкость первого жесткого диска, представленного в 1983 году IBM в компьютере PC/XT, составляла десять мегабайт. В 1999 году менее чем за 400 долларов можно было приобрести жесткий диск емкостью 20 гигабайт (20 миллиардов байт).
Как правило, дискета или жесткий диск предусматривает собственный электронный интерфейс, однако для обмена данными с микропроцессором требуется еще один. Наиболее популярные стандарты интерфейсов для жестких дисков — SCSI (Small Computer System Interface), ESDI (Enhanced Small Device Interface) и IDE (Integrated Device Electronics)
[30]. Все эти интерфейсы используют прямой доступ к памяти (DMA) для того, чтобы перехватить управление шиной и осуществлять обмен данными непосредственно между оперативной памятью и диском, минуя микропроцессор. При этом обмен информацией происходит фрагментами, соответствующими размеру дискового сектора, который обычно равен 512 байт.