Любой IBM PC-совместимый компьютер представляет собой реализацию так называемой фон-неймановской архитектуры вычислительных машин. Эта архитектура была представлена Джорджем фон Нейманом (George von Neumann) еще в 1945 году и имеет следующие основные признаки. Машина состоит из блока управления, арифметико-логического устройства (АЛУ), памяти и устройств ввода-вывода. В ней реализуется концепция хранимой программы: программы и данные хранятся в одной и той же памяти. Выполняемые действия определяются блоком управления и АЛУ, которые вместе являются основой центрального процессора. Центральный процессор выбирает и исполняет команды из памяти последовательно, адрес очередной команды задается «счетчиком адреса» в блоке управления. Этот принцип исполнения называется после-довательной передачей управления. Данные, с которыми работает программа, могут включать переменные — именованные области памяти, в которых сохраняются значения с целью дальнейшего использования в программе. Фон-неймановская архитектура — не единственный вариант построения ЭВМ, есть и другие, которые не соответствуют указанным принципам (например, потоковые машины). Однако подавляющее большинство современных компьютеров основаны именно на указанных принципах, включая и сложные многопроцессорные комплексы, которые можно рассматривать как объединение фон-неймановских машин. Конечно же, за более чем полувековую историю ЭВМ классическая архитектура прошла длинный путь развития. Тем не менее ПК можно «разложить по полочкам» следующим образом.
Центральный процессор (АЛУ с блоком управления) реализуется микропроцессором семейства х86 — от 8086/88 до новейших процессоров Pentium, Athlon и Opteron (и это не конец истории). При всей внутренней суперскалярности, суперконвейеризированности и спекулятивности (см. главу 7) современного процессора внешне он соблюдает вышеупомянутый принцип последовательной передачи управления. Набор арифметических, логических и прочих инструкций насчитывает несколько сотен, а для потоковой обработки придуман принцип SIMD (Single Instruction Multiple Data — множество комплектов данных, обрабатываемых одной инструкцией), по которому работают расширения ММХ, 3DNow!, SSE. Процессор имеет набор регистров, часть которых доступна для хранения операндов, выполнения действий над ними и формирования адреса инструкций и операндов в памяти. Другая часть регистров используется процессором для служебных (системных) целей, доступ к ним может быть ограничен (есть даже программно-невидимые регистры). Все компоненты компьютера представляются для процессора в виде наборов ячеек памяти или/и портов ввода-вывода, в которые процессор может записывать и/или из которых может считывать содержимое.
Память «расползлась» по многим компонентам. Оперативная память (ОЗУ) — самый большой массив ячеек памяти со смежными адресами — реализуется, как правило, на модулях (микросхемах) динамической памяти. Для повышения производительности обмена данными (включая и считывание команд) оперативная память кэшируется сверхоперативной памятью (см. 7.3). Два уровня кэширования территориально располагаются в микропроцессоре. Оперативная память вместе с кэшем всех уровней (в настоящее время — до трех) представляет собой единый массив памяти, непосредственно доступный процессору для записи и чтения данных, а также считывания программного кода. Помимо оперативной память включает также постоянную (ПЗУ), из которой можно только считывать команды и данные, и некоторые виды специальной памяти (например, видеопамять графического адаптера). Вся эта память (вместе с оперативной) располагается в едином пространстве с линейной адресацией. В любом компьютере обязательно есть энергонезависимая память, в которой хранится программа начального запуска компьютера и минимально необходимый набор сервисов (ROM BIOS).
Процессор (один или несколько), память и необходимые элементы, связывающие их между собой и с другими устройствами, называют центральной частью,или ядром, компьютера (или просто центром). То, что в фон-неймановском компьютере называлось устройствами ввода-вывода (УВВ), удобнее называть периферийными устройствами.
Периферийные устройства (ПУ) — это все программно-доступные компоненты компьютера, не попавшие в его центральную часть. Их можно разделить по назначению на несколько классов:
♦ Устройства хранения данных (устройства внешней памяти) — дисковые (магнитные, оптические, магнитооптические), ленточные (стримеры), твер дотельные (карты, модули и USB-устройства на флэш-памяти). Эти устрой ства используются для сохранения информации, находящейся в памяти, на энергонезависимых носителях и загрузки этой информации в оперативную память. В каком виде хранится информация на этих устройствах, нам не так уж важно (главное — правильно считать то, что сохранили).
♦ Устройства ввода-вывода служат для преобразования информации из внут реннего представления компьютера (биты и байты) в форму, понятную ок ружающим, и обратно. Под окружающими подразумеваются человек (и другие биологические объекты) и различные технические устройства (компьютер можно приспособить для управления любым оборудованием, были бы дат чики и исполнительные устройства). В какую форму эти устройства преоб разуют двоичную информацию — определяется их назначением.
♦ Коммуникационные устройства служат для передачи информации между компьютерами и/или их частями. Сюда относят модемы (проводные, радио, оптические, инфракрасные...), адаптеры локальных и глобальных сетей. В дан ном случае преобразование формы представления информации требуется толь ко для передачи ее на расстояние.
Процессор, память и периферийные устройства взаимодействуют между собой с помощью шин и интерфейсов, аппаратных и программных; стандартизация интерфейсов делает архитектуру компьютеров открытой.