Страницы

Поиск по вопросам

понедельник, 9 декабря 2019 г.

Как процессор работает с периферией?

#книги #процессор


Ищу информацию о том, как процессор работает с винчестером, интернет-картой, как
он загружает данные в память и отправляет их.
Порекомендуйте, пожалуйста, какую-нибудь книгу, или объясните кратко.
    


Ответы

Ответ 1



В общем случае периферийное устройство оформляется, как небольшой участок памяти, записывая по определенным адресам команды и параметры, читая с определенных адресов информацию о состоянии вы работаете с устройством. Бывает, что иногда эта область памяти выделяется в т.н. порты ввода/вывода, тогда чтение/запись осуществляются спец. командами, но это не меняет общей логики. По взаимодействию с конкретным устройством надо читать описание контроллера который вас интересует, обычно это какая-то микросхема. Это я всё описал очень упрощенно, чтобы изучать такие вещи надо предварительно почитать про аппаратные прерывания и их обработку и про прямой доступ к памяти т.н. DMA. Ссылки по теме: Порт ввода-вывода Шина Прерывание Прямой доступ к памяти

Ответ 2



Процессор не работает непосредственно с периферией. Согласно спецификации на, к примеру, Intel Core i7 (стр. 37-51), единственные шины, которые у него есть для связи с внешним миром — это три группы контактов: две для оперативной памяти (DDR1_*, DDR2_*) и одна для QPI (QPI_*). То есть у процессора есть две абстракции — «оперативная память» (в кавычках, так как на самом деле это просто адресное пространство, которому может быть сопоставлено что угодно, не только ОЗУ) и канал для двухсторонней передачи пакетов (программисту он полезен только тем, что и по нему приходят прерывания и через него работают так называемые I/O-порты). Все три шины идут в чипсет. Однако: с первыми двумя работает та часть чипсета, которая раньше называлась «северный мост». Он обрабатывает запросы процессора на чтение из и запись в «оперативную память», перенаправляя их либо на микросхемы ОЗУ, либо на южный мост в зависимости от того, куда какие физические адреса были назначены. Причём это назначение может динамически изменяться по запросу из BIOS или южного моста. с третьей работает «южный мост». Именно он взаимодействует с периферией, знает об IDE/SATA/PS2 и прочих интерфейсах. Ну или знает, к каким ногам чипсета подключены соответствующие микросхемы-контроллеры. Его задача — переводить электрические сигналы с аппаратных шин на язык QPI-прерываний процессора, а также обрабатывать запросы от «северного моста» на работу с зарезервированными областями памяти, перенаправляя их соответствующим устройствам. Работу же конкретного устройства, — где оно будет использовать прерывания, а где будет отображать буферы в «оперативную память», — определяет его производитель. Именно поэтому и нужны драйвера, чтобы перевести это уникальное сочетание способов общения конкретного устройства с процессором в стандартные абстракции операционной системы, доступные другим программам («жёсткий диск», «сетевая карта» и т. д.).

Ответ 3



В дополнение к предыдущему ответу:процессор может работать непосредственно с периферией.Вопрос только в том,как это реализовано.В любом случае,если это x86, или ARM процессор,у него есть такие инструкции IN и OUT,которые как раз предназначены для работы с периферией.В зависимости от периферии,есть шинный контроллер,или какой либо другой контроллер(северный мост,к примеру),обрабатывающий команды от CPU.Процессор получает инструкцию OUT port,AL, к примеру,и выставляет на шине адрес порта port,и дергает определенную ногу,отвечающую за ту периферию,в области адресов которой находится порт,шинный контроллер соответственно получив этот сигнал,подключает к шине соответствующее периферийное устройство.Если опустить детали, то процесс именно такой,на 99% архитектур. Так реализуется изолированный ввод/вывод.Прямой ввод/вывод проще - просто на шину параллельно цепляется периферия,которая маппится на определенны адрес, и можно просто писать любой командой для работы с память в эту периферию.

Комментариев нет:

Отправить комментарий