コンピュータのメカニズム
データ転送のしくみ
コンピュータの基本構造
![]() |
---|
図1 CPUは計算や制御の中心であり、各種記憶素子や周辺機能とデータをやり取りする役割を担う.画像クリックで動画を見る.または記事を読む.[著]圓山 宗智 詳細:[VOD] 新人技術者のためのRISC-V CPU設計 初めの一歩~C言語完全対応!HDLソース 500行のミニCPUを一緒に作る~ |
コンピュータの中心にはCPU(Central Processing Unit:中央演算処理ユニット)が存在します。CPUは計算や制御の中心であり、各種記憶素子や周辺機能とデータをやり取りする役割を担います。主な記憶素子にはROM、RAM、レジスターがあります。ROMはプログラムや固定データを格納し、RAMは一時的な作業領域として使用されます。レジスターはCPU内部で高速にアクセスできる小容量の記憶領域です。
CPUと各記憶素子はバス(BUS)で接続されています。バスはデータ転送の通り道として機能し、CPUが出力するアドレスに従い、アクセス先のメモリや周辺機能に正しく信号を伝達します。アドレスマップを定義することで、どの記憶素子がどのアドレス範囲を担当するかを明確にします。
データ転送のしくみ
データ転送はCPUの指示に基づきバスを通じて行われます。CPUはアクセス先のアドレスを出力し、バスはそのアドレスをもとに該当するメモリや周辺機能に信号を伝達します。読み出し操作ではデータが記憶素子からCPUに送られ、書き込み操作ではCPUから記憶素子へデータが転送されます。データ幅はCPUのアーキテクチャによって異なり、8ビット単位のバイト、16ビット単位のハーフワード、32ビット単位のワードなどがあります。
リトルエンディアンとビッグエンディアン
同一幅のデータを複数のバイトに分けてメモリに配置する方法にはリトルエンディアンとビッグエンディアンがあります。リトルエンディアンではデータの下位バイトが低いアドレスに配置され、ビッグエンディアンでは上位バイトが低いアドレスに配置されます。この方式により、メモリのバイト順序をCPUが正しく解釈し、演算やデータ転送を適切に実行できます。現代のほとんどのCPUはリトルエンディアンを採用しています。
アクセス単位とアドレスの割り当て
CPUがメモリを操作する際、アドレスはバイト単位で割り当てられます。32ビット幅のメモリの場合、1ワードは4バイトで構成され、それぞれに順序を決めてアドレスを振ります。16ビットデータを格納する場合も同様にバイト単位で配置を決定します。アクセス単位を明確にすることで、CPUはメモリ内の任意のデータに正確にアクセスでき、複雑な処理を効率的に行えます。
- CPUがアクセス先のアドレスを出力する
- バスが出力アドレスを解析し、該当する記憶素子に信号を伝達する
- 読み出しデータはCPUに返され、書き込みデータは記憶素子に格納される
- データ幅に応じてアドレス割り当てを行い、リトルエンディアンやビッグエンディアンを適用する
このようにCPU、バス、記憶素子の関係を理解することで、コンピュータ内部でのデータの流れや転送のしくみを正確に把握できます。アドレスマップやエンディアンの概念は、プログラムの動作やハードウェア設計の基礎として重要です。
〈著:ZEPマガジン〉参考文献
- Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
- Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
- [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
- [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
- [VOD]カメラ×ラズパイで一緒に!初めての画像処理プログラミング
- [VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.