主要な取り組み
- メモリ マップド I/O (MMIO) は、I/O デバイスをメモリの場所として扱い、そのレジスタをシステムのメモリ アドレス空間内の特定のアドレスにマッピングします。 これにより、CPU はロード/ストア命令を使用して I/O デバイスにアクセスできるようになり、プログラミングが簡素化され、効率的なデータ転送が可能になります。
- I/O マップされた I/O (I/O-MMIO) は、通常のメモリ アドレス空間とは異なる、I/O 操作用の別のアドレス空間を使用します。 特別な I/O 命令は I/O デバイスと通信し、分離と柔軟性を提供します。
- MMIO はメモリ保護メカニズムと効率的なデータ転送速度の恩恵を受けますが、アドレス空間と潜在的な競合に制限があります。 I/O-MMIO はメモリの競合を回避し、より大きなアドレス空間を提供しますが、プログラミングが複雑になり、アクセスが遅くなる可能性があります。 どちらを選択するかは、システム要件と設計上の考慮事項によって異なります。
メモリマップド I/O とは何ですか?
メモリ マップド I/O (入力/出力) は、メモリ操作を使用してハードウェア デバイスや外部コンポーネントなどの周辺機器にアクセスし、制御できるようにするコンピュータ システムで使用される技術です。 これには、周辺機器のアドレス空間をコンピュータのメモリ アドレス空間に直接マッピングすることが含まれます。
メモリ マップド I/O システムでは、I/O 操作用に予約されたメモリ アドレスが周辺デバイスに割り当てられます。 これらのアドレスは通常のメモリ位置として扱われ、CPU はそれぞれロード命令とストア命令を使用してアドレスを読み書きしたりできます。 これは、特定の I/O 命令を使用するのではなく、メモリの場所を操作することによって I/O 操作が実行されることを意味します。
I/O マップされた I/O とは何ですか?
I/O マップされた I/O (入力/出力) は、コンピュータ システム内の周辺デバイスとインターフェイスするためのメモリ マップされた I/O の代替手段です。 周辺デバイスをメモリ アドレス空間にマップするメモリ マップド I/O とは異なり、I/O マップド I/O は I/O 操作に別のアドレス空間を割り当てます。
I/O マップされた I/O システムでは、CPU は特定の入出力命令を使用して周辺デバイスと通信します。 これらの命令は、メモリ アクセスのための通常のロードおよびストア命令とは異なります。 I/O 命令は、I/O 操作を処理するように設計されており、CPU の命令セット アーキテクチャによって提供されます。
メモリマップド I/O と I/O マップド I/O の違い
- メモリ マップド I/O では、メモリ アドレスと I/O アドレスが同じアドレス空間で共有されます。 周辺デバイスは特定のメモリ アドレスにマップされ、メモリ アクセス用の CPU 命令を使用してデバイスと通信します。 対照的に、I/O マップされた I/O は、メモリ アドレス空間とは異なる、I/O 操作用の別個のアドレス空間を割り当てます。
- メモリ マップされた I/O は、周辺デバイスのメモリ マップされたアドレスから読み書きする命令をロードおよび保存するために使用されます。 一方、I/O マップされた I/O には、I/O アドレスと対話するために特別に設計された専用の入出力命令が必要です。
- メモリマップド I/O では、利用可能なメモリ空間によってアドレス範囲が制限されます。 I/O 操作に使用されるメモリ アドレスは、アドレス空間全体に分散している場合があります。 I/O マップされた I/O では、アドレス範囲は I/O 操作専用であり、メモリ アドレスと重複しません。
- メモリマップド I/O は、デバイスがメモリ階層の一部であるように見えるため、より単純なプログラミング モデルを提供します。 一方、I/O マップされた I/O では、プログラマが個別の I/O 命令とアドレス空間を管理する必要があるため、ソフトウェア開発がさらに複雑になります。
- メモリ マップされた I/O は、デバイスがメモリと同じアドレス空間を共有するため、I/O 操作のセキュリティと保護が制限される場合があります。 メモリ位置への不正アクセスは、接続されているデバイスに影響を与える可能性があります。 I/O マップド I/O では、個別の I/O アドレス空間により分離と保護が強化され、メモリへの不正アクセスによって I/O デバイスへのアクセスが自動的に許可されることがなくなります。
メモリマップド I/O と I/O マップド I/O の比較
比較のパラメータ | メモリマップド I/O | I/O マップされた I/O |
---|---|---|
アドレッシング | メモリ アドレスはメモリ操作と I/O 操作の両方に使用されます。 | 個別の I/O アドレスは I/O 操作専用に使用されます。 |
アドレス範囲 | 利用可能なメモリ容量によって制限されます。 | メモリとは別に、I/O 操作専用の専用アドレス空間。 |
説明書 | メモリマップドI/O | I/O 操作用に設計された特定の入出力命令。 |
ハードウェアインターフェイス | デバイスはメモリ階層の一部であるかのように見えます。 | デバイス通信には個別の I/O インターフェイスと制御信号が必要です。 |
性能 | ロード/ストア命令は、メモリと I/O アドレスの両方にアクセスするために使用されます。 | I/O 命令はメモリ アクセス命令と比べて実行が遅くなり、パフォーマンスに影響を与える可能性があります。 |
- https://arxiv.org/abs/2301.06689
- https://www.researchgate.net/profile/John-Mccalpin/publication/266375644_Low_Level_Microbenchmarks_of_Processor_to_FPGA_Memory-Mapped_IO/links/542dcd460cf27e39fa94b415/Low-Level-Microbenchmarks-of-Processor-to-FPGA-Memory-Mapped-IO.pdf