Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Процессорлық байланыс әдісі
Method of CPU communication
Жадқа бейнеленген I/O (MMIO) және портқа бейнеленген I/O (PMIO) – компьютердегі орталық процессор (CPU) мен сыртқы құрылғылар арасындағы кіріс/шығыс (I/O) операцияларын жүзеге асырудың екі толықтыратын әдісі (әдетте чипсет арқылы қол жеткізуді қамтамасыз етеді). Баламалы тәсіл – арнайы I/O процессорларын пайдалану, олар өздік нұсқауларын орындайтын, эВМ-дердегі арналар ретінде кеңінен танымал. Жадқа бейнеленген I/O, негізгі жад пен I/O құрылғыларын адрестеу үшін бірдей адрес кеңістігін пайдаланады.
Memory mapped I/O (MMIO) and port mapped I/O (PMIO) are two complementary methods of performing input/output (I/O) between the central processing unit (CPU) and peripheral devices in a computer (often mediating access via chipset). An alternative approach is using dedicated I/O processors, commonly known as channels on mainframe computers, which execute their own instructions. Memory mapped I/O uses the same address space to address both main memory and I/O devices.
Шолу
Различные методы связи ЦП с устройствами, такие как отображение в память, не влияют на прямой доступ к памяти (DMA) устройства, поскольку, по определению, DMA — это метод связи устройства с памятью, который обходит ЦП. Аппаратные прерывания — это еще один метод связи между ЦП и периферийными устройствами, однако по ряду причин прерывания всегда рассматриваются отдельно. Прерывание инициируется устройством, в отличие от вышеупомянутых методов, которые инициируются ЦП. Оно также однонаправленное, поскольку информация передается только от устройства к ЦП. Наконец, каждая линия прерывания несет только один бит информации с фиксированным значением, а именно: «в устройстве на этой линии прерывания произошло событие, требующее внимания». Операции ввода-вывода могут замедлить доступ к памяти, если шины адреса и данных используются совместно. Это связано с тем, что периферийное устройство обычно работает медленнее, чем основная память. В некоторых архитектурах ввод-вывод с отображением портов работает через выделенную шину ввода-вывода, что облегчает эту проблему. Одним из преимуществ ввода-вывода с отображением в память является то, что, устраняя дополнительную сложность, которую вносит ввод-вывод с отображением портов, ЦП требует меньше внутренней логики и, следовательно, дешевле, быстрее, проще в изготовлении, потребляет меньше энергии и может быть физически меньше; это соответствует основным принципам вычислений с уменьшенным набором команд и также выгодно во встроенных системах. Другое преимущество заключается в том, что поскольку для адресации устройств используются обычные инструкции памяти, все режимы адресации ЦП доступны как для ввода-вывода, так и для памяти, и инструкции, которые выполняют ALU-операцию непосредственно над операндом памяти (загрузка операнда из места в памяти, сохранение результата в место в памяти или и то, и другое), могут использоваться с регистрами устройств ввода-вывода. Напротив, инструкции ввода-вывода с отображением портов часто очень ограничены, часто предоставляя только простые операции загрузки и сохранения между регистрами ЦП и портами ввода-вывода, так что, например, для добавления константы к регистру устройства с отображением портов потребуется три инструкции: прочитать порт в регистр ЦП, добавить константу к регистру ЦП и записать результат обратно в порт. Поскольку 16-битные процессоры устарели и были заменены 32-битными и 64-битными процессорами для общего использования, резервирование диапазонов адресного пространства памяти для ввода-вывода является меньшей проблемой, поскольку адресное пространство памяти процессора обычно намного больше, чем пространство, необходимое для всей памяти и устройств ввода-вывода в системе. Поэтому стало более практичным использовать преимущества ввода-вывода с отображением в память. Однако, даже если адресное пространство больше не является серьезной проблемой, ни один из методов отображения ввода-вывода не является универсально превосходящим другой, и будут случаи, когда использование ввода-вывода с отображением портов все еще предпочтительнее.
Different CPU to device communication methods, such as memory mapping, do not affect the direct memory access (DMA) for a device, because, by definition, DMA is a memory to device communication method that bypasses the CPU. Hardware interrupts are another communication method between the CPU and peripheral devices, however, for a number of reasons, interrupts are always treated separately. An interrupt is device initiated, as opposed to the methods mentioned above, which are CPU initiated. It is also unidirectional, as information flows only from device to CPU. Lastly, each interrupt line carries only one bit of information with a fixed meaning, namely "an event that requires attention has occurred in a device on this interrupt line". I/O operations can slow memory access if the address and data buses are shared. This is because the peripheral device is usually much slower than main memory. In some architectures, port mapped I/O operates via a dedicated I/O bus, alleviating the problem. One merit of memory mapped I/O is that, by discarding the extra complexity that port I/O brings, a CPU requires less internal logic and is thus cheaper, faster, easier to build, consumes less power and can be physically smaller; this follows the basic tenets of reduced instruction set computing, and is also advantageous in embedded systems. The other advantage is that, because regular memory instructions are used to address devices, all of the CPU's addressing modes are available for the I/O as well as the memory, and instructions that perform an ALU operation directly on a memory operand (loading an operand from a memory location, storing the result to a memory location, or both) can be used with I/O device registers as well. In contrast, port mapped I/O instructions are often very limited, often providing only for simple load and store operations between CPU registers and I/O ports, so that, for example, to add a constant to a port mapped device register would require three instructions: read the port to a CPU register, add the constant to the CPU register, and write the result back to the port. As 16 bit processors have become obsolete and replaced with 32 bit and 64 bit in general use, reserving ranges of memory address space for I/O is less of a problem, as the memory address space of the processor is usually much larger than the required space for all memory and I/O devices in a system. Therefore, it has become more frequently practical to take advantage of the benefits of memory mapped I/O. However, even with address space being no longer a major concern, neither I/O mapping method is universally superior to the other, and there will be cases where using port mapped I/O is still preferable.
x86
x86 негізіндегі архитектураларда жадқа бейнеленген I/O артықшылықты, себебі порт арқылы I/O-ны жүзеге асыратын командалар бір ғана регистрмен шектеледі: деректерді оқуға немесе жазуға болатын жалғыз регистрлер – EAX, AX және AL, ал деректерді қай портқа жіберу немесе алу керектігін нұсқаудағы бір байттық дереу мән немесе DX регистріндегі мән анықтайды.
Memory mapped I/O is preferred in x86 based architectures because the instructions that perform port based I/O are limited to one register: EAX, AX, and AL are the only registers that data can be moved into or out of, and either a byte sized immediate value in the instruction or a value in register DX determines which port is the source or destination port of the transfer.