組み込みシステムは、市場で入手可能なほとんどの電子製品の中核です。これは、ハードウェアとソフトウェアが出会うエンジニアリングの実装です。私たちは、生体認証ドアロック、飛行機、車、ペースメーカーなどのミニコンピューターを備えた組み込みシステムの世界に囲まれています。これらのリソースに制約のある、小さく、スマートで強力なシステムは、私たちの日常業務に役立ちます。
私たちの体がどのように機能しているか、神経系、脳、そしてマルチタスク能力について考えたことはありませんか。これらすべての機能を組み合わせると、生物学的組み込みシステムの大まかな全体像が得られます。私たちの脳は、その内部で起こるその機能の複雑な詳細を隠していますが、それでも私たちはそれを最大限の可能性に制御することができます。同じ複雑さが、組み込みシステムで使用されるプロセッサまたはコントローラにも当てはまります。それらは複雑な詳細を隠し、作業するための高レベルのインターフェースを提供します。抽象化のレベルについては、高級プログラミング言語で2つの数値を加算するコードが、チップ内のレジスターがビットを処理し、ユーザーに出力を返す方法を関連付けることができます。
プロセッサアーキテクチャ
中央処理装置は、マイクロプロセッサとマイクロコントローラの両方を指し、制御装置(CU)と算術論理演算装置(ALU)の助けを借りて特定のタスクを実行します。命令がRAMから配信されると、CPUは、変数を作成し、それらに値とメモリを割り当てることにより、2つの支援ユニットの助けを借りて動作します。 CPUがそのアーキテクチャの助けを借りて、このすべてのアクションをどのように実行するかを知ることは非常に重要です。マイクロコントローラーがどのように機能するかについてもっと知りたい場合は、このマイクロコントローラーの基本に関する記事を読むことができます。
すべてのCPUには、プログラムとデータを格納するためのメモリが関連付けられています。プログラムとデータはCPUと連携して出力を取得します。プログラムは指示を提供し、データは作業する情報を提供します。プログラムとデータにアクセスするために、CPUはバスを使用します。これらのバスはワイヤであり、より正確には、プリント回路基板で見られるようなワイヤトレースです。近年、マイクロコントローラとマイクロプロセッサは、アプリケーションまたは設計要件に基づいてさまざまなアーキテクチャを適応させることによって進化してきました。マイクロコントローラの選択は、そこで使用されるアーキテクチャのタイプに影響されます。人気のあるアーキテクチャを見てみましょう。
フォンノイマン/プリンストンアーキテクチャ
CPUがプログラムとデータにアクセスする方法は、CPUのアーキテクチャについて説明しています。以前は、プログラムとデータにアクセスするために単一のバスが使用されていました。このタイプのアーキテクチャは、フォンノイマンアーキテクチャまたはより単純にプリンストンアーキテクチャとして知られています。コードとデータを取得するための単一のバスは、お互いに邪魔になり、CPUの処理速度を遅くします。これは、お互いがフェッチを完了するのを待つ必要があるためです。この制限は、フォンノイマンボトルネック状態としても知られています。
ハーバードアーキテクチャ
プロセスをスピードアップするために、ハーバードアーキテクチャが提案されました。このアーキテクチャでは、データとプログラム用の個別のデータバスが存在します。つまり、このアーキテクチャは4つのバスの使用を提案したということです
- CPUにデータを出し入れするデータバスのセット。
- データにアクセスするためのアドレスバスのセット。
- コードをCPUに運ぶためのデータバスのセット。
- コードにアクセスするためのアドレスバス。
個別のアドレスバスとデータバスを使用すると、CPUの実行時間が短くなりますが、アーキテクチャの設計が複雑になるという犠牲が伴います。フォンノイマンアーキテクチャは少し怠惰に聞こえるかもしれませんが、シンプルなデザインという利点があります。
ハーバードアーキテクチャは、CPUとメモリユニットが同じスペースを共有する場合、またはRAMとROMがマイクロコントローラのように処理ユニットに組み込まれている(オンチップ)場合、実装が非常に簡単です。距離はミクロンとミリメートルです。ただし、コードを保持するメモリがx86 IBM PCのように処理ユニットの外部にある場合、同じアーキテクチャを実装するのは困難です。マザーボード上のデータとアドレスの両方の個別のワイヤトレースのセットは、ボードを複雑で高価にします。プロセッサの例でそれを理解しましょう。
64ビットのデータバスと32ビットのアドレスバスを備えたプロセッサは、フォンノイマンアーキテクチャを実装するために約100個のバス(データとアドレスバス用に96個、制御信号用に他のいくつか)を必要とします。ハーバードアーキテクチャで実装された場合、同じ構造は、プロセッサから多数のピンが出ている状態で、約200の二重線トレースのコストがかかります。これは、PCやワークステーションに純粋なハーバードアーキテクチャが実装されていないのと同じ理由です。代わりに、CPUキャッシュメモリを備えたメモリ階層を使用してプログラムとデータを分離する、変更されたハーバードアーキテクチャが使用されます。メモリ階層は、プロセスの応答時間の階層に基づいてストレージを分離します。
命令セットアーキテクチャ
プログラム(コード)がシステム(RAM)のメモリにロードされると、CPU(マイクロプロセッサとマイクロコントローラの両方を参照)によってフェッチされてデータに作用するため、犬を訓練するときに指示を与えるのとよく似ています。特定のアクションとコマンド。これらの命令が実行されると、特定のトランジスタが1つの論理レベルから別の論理レベルに移動してそれを実現します。したがって、基本的には、命令の助けを借りて、人間のプログラマーはプロセッサーと通信します。すべてのCPUには、独自の命令セット、つまりアーキテクチャと機能に基づいた命令のコレクションがあります。
CPUは、これらの命令を0と1の組み合わせで理解します。これらは、オペコードとも呼ばれます。人間のプログラマーにとって、CPUに関連付けられているすべての命令の0と1の組み合わせを覚えておくのは非常に困難です。人間のプログラマーの仕事を簡単にするために、これらの命令の高レベルのインターフェースが提供され、コンパイラーはそれらを処理のために0と1の形式に変換します。また、各CPUの命令セットには、理解できる命令の数が限られています。
CPUのパフォーマンス
CPUのパフォーマンスに関連するCPUのクロックレートという用語を聞いたことがあるかもしれません。 CPUは通常、25 GHzのクロックレートのようにMHz(メガヘルツ)またはGHz(ギガヘルツ)のクロックレートを持っています。クロックレートに関連付けられた数値は、CPU内のクロックが1秒あたりのサイクルで何回ティックするかを示します。クロックレートの実用性は、CPUが一度に実行できるプログラムの数に比例するCPUのクロックサイクルに基づいて命令が実行されるという事実によって理解できます。
CPUのパフォーマンスは、プログラムに書き込まれる命令の数、命令の数、CPUがそれらを実行するのにかかる時間に依存します。また、各命令が実行されるクロックサイクルの数にも依存します。特定の命令は、他の命令よりも多くのクロックサイクルを実行する必要があるため、CPUのパフォーマンスが低下します。プログラム内の命令と各命令を実行するために必要なサイクルは、互いに反比例します。一方を変更すると、もう一方に影響します。これがCPU業界が分かれているポイントです。
RISCおよびCISC命令セットアーキテクチャ
上記のように、プログラムの実行とCPUのパフォーマンスは、プログラム内の命令の数に依存します。命令は、命令セットの一部としてその特定のCPUに提案され、2番目の要素は次のクロックサイクル数です。各命令が実行されます。これらの2つの要因に基づいて、現在2つの命令セットが利用可能です。最も初期のものは複雑な命令セットコンピューティング(CISC)であり、もう1つは縮小命令セットコンピューティング(RISC)です。RICアーキテクチャとCISCアーキテクチャの違いを理解するために、これらの各アーキテクチャについて詳しく説明しましょう。
複雑な命令セットコンピューティング(CISC)
CISCは、Complex Instruction SetComputingの略です。 CISCの主な動機は、プログラムが実行する命令の数を減らすことです。これは、アドレスモード、ロードなどの多くの単純な命令を組み合わせて、単一の複雑な命令を形成することによって行われます。CISC命令は、単純な命令のシリーズと同様に実行するために、複数のクロックサイクルを取り、いくつかの特別な指示が含まれています。 CISC命令は、レジスタを介さずにメモリを直接処理できます。つまり、値のロードやメモリ(RAM)の要件などの基本的な命令が不要になります。 CISC命令は、ソフトウェアよりもハードウェアに重点を置いています。つまり、コンパイラに負荷をかけるのではなく、CISCは、命令をデコードおよび実装するためのハードウェアとしてトランジスタを使用します。ただし、命令は複雑で複数のステップで構成されているため、より多くのクロックサイクルで実行されます。
あなたが本を開いて、3読み込むように言われたときに関連する単純なアナロジーはある番目の章の2回目のページを。この一連のアクティビティでは、ページを第3章にシャッフルしてから、章の2ページ目に移動して読み始めるよりも、バッグから本を見つけるなどの複数の手順を実行します。(2頁44読み出し1つの命令で組み合わせた場合、ステップの一連ND 3のページ数番目の章)は、我々は、CISC命令を取得します。
縮小命令セットコンピューティング(RISC)
最初の集積チップは、1958年にジャック・キルビーによって設計されました。これは発振器であり、1970年に最初の商用マイクロプロセッサがIntelから発売されました。プロセッサの起動時にはCISCはありませんでしたが。しかし、コンピューティングの需要が高いため、CISCアーキテクチャはより複雑になり、処理が困難になりました。 RISCとして知られるCISCアーキテクチャの完全な再設計は、JohnCokeによってIBMから発表されました。したがって、2つのアーキテクチャを区別するために、RISCとCISCという用語が導入されました。
RISCは、縮小命令セットコンピューティングの略です。 RISCの主な動機は、命令のサイズと実行に均一性を導入することでした。これは、サイクルごとに1つの命令として実行できる単純な命令セットを導入することによって行われました。これは、ロードや保存などの複雑な命令を異なる命令に分割することによって行われます。各命令の実行には約1クロックサイクルかかります。RISCアーキテクチャは、単一のクロックサイクルで実行することができ、同じ大きさの単純な命令を含みます。RISCベースのマシンは、各命令をレジスタにロードするときに値を保持するために、CISCよりも多くのRAMを必要とします。サイクルごとに単一の命令を実行すると、RISCベースのマシンにパイプライン化の利点がもたらされます(パイプラインは、最初の命令が実行される前に次の命令がロードされるプロセスです。これにより、実行の効率が向上します)。RISCアーキテクチャは強調します