KUMICO

COLUMN

組み込みマイコンがプログラムを動かす仕組み

前回の「組み込みシステムにマイコンが不可欠な理由」では、マイコン(マイクロコンピュータ)とは?といった基礎、定義付けから始まり、組込みシステムにマイコンが使われるようになった経緯に関して入門者向けに説明しました。「マイコンって、ハードディスクを制御してプログラムを動かすものなのね」なんて、基本を理解して頂ければ、書いている私としてもうれしい限りです。今回のコラムでは、「マイコンはどのようにしてプログラムを動かしているのか」「そもそもプログラムとは何なのか」といった所に踏み込んでみようと思います。

そもそもプログラムってなに?

プログラムとは、広義でいえばソフトウェアの一部であり、ソフトウェアを意味する場合もあります。人間によってプログラムの作成がなされることをプログラミングといい、コンピューターが理解できる「プログラミング言語」という言語を用いて行われます。プログラミング言語にはたくさんの種類があります。例えば、JavaやC言語、C++、Ada、BASICあたりはご存知かと思います。中でも、主に組み込みシステム開発(エンベデッドシステム開発)に用いられるのは、C言語やC++などが一般的です。
プログラミングを行う際には、統合開発環境などといったソフトウェア開発ツールを利用します。マイコンを搭載する組み込み機器を開発する際、本来ならパソコン用アプリケーション・ソフトウェアと同じような開発環境が利用できるのが理想です。しかし、組み込み機器にはWindowsやLinuxのようなOSは搭載されていません。そのため、組み込みソフトウェア開発にあたっては、パソコン向けではなく組み込み向けの開発環境で開発を行う必要があります。

スマートフォンが普及している今、プログラムという言葉よりもアプリケーション、アプリなんて言った方が身近で理解しやすいのかもしれません(※正確に言えばイコールではないのですが、ここでは理解度を優先しアプリケーションとして話を進めます)。スマートフォンで言えばApp StoreやGoogle Playから入手できるゲームやスケジュールアプリなどがそれにあたります。パソコンを例にいえば、Microsoft Word、Microsoft Excel、年賀状作成ソフトなどがアプリケーションにあたります。このアプリケーションはそれぞれ“ある目的”を持って作られています。例えばスケジュールアプリであれば、スケジュールを管理するため、筆ぐるめであれば年賀状を作成するため、Microsoft Wordであれば文章を作成するため、といった具合に、それぞれの目的に応じて作られています。
組み込みプログラムもほぼ同じです。ある目的を実現するための命令、振る舞いを記載したものと理解してください。
プログラムを私(サラリーマン)の日常生活に置き換えてみます。私の場合には、「家族を養うお金を稼ぐために、朝起きて朝食を準備し、食べる。顔を洗って歯を磨き、服を着替えて会社に向かう。会社に着いて作業着に着替え、自分のパソコンを立ち上げ仕事をする。区切りの良い所まで仕事を進め、時間になったら帰宅する」といった感じでしょうか。目的を実現するために、命令、振る舞いが並んでいるのがわかるかと思います。概念的ではありますが、これがプログラムなのです。

マイコン内で実際にプログラムを実行するのがCPU

単一の電子部品であるマイコンは、その特徴から、あらゆる組み込みシステム、組込み機器に欠かせないことが前回までにおわかりいただけたでしょう。組み込みシステムや、マイコン、プログラムの定義が理解できたところで、いよいよマイコンの組み込みプログラムを実行する部分の説明に入ります。
マイコンはCPU(プロセッサ)・メモリ・周辺機能によって構成されています。これを人間に例えると、「CPU=思考」「メモリ=記憶」「周辺機能=感覚・神経」となります。
まず、実際にプログラムを実行するのはマイコンに内蔵されたCPU(プロセッサ)です。命令を受けたCPU内部の流れを見てみましょう。まず、プログラムカウンタに示された「実行すべき命令の記憶場所」から、命令デコード回路が命令を解読します。その解読結果に基づき演算回路が動作、そしてCPU内部レジスタが演算結果や演算する値などを一時的に保存したり、周辺機能を動かしたりします。このように、命令を受けたCPUは人間でいう「思考」と似たような働きを担っています。

人間の脳と同じ!?マイコンが持つ2種類の記憶領域

CPU(プロセッサ)が思考を担当するのに対し、メモリは記憶を司ります。人間もそうですが、記憶領域は大きく分けて2種類あります。脳は「思い出す」という瞬間的なアクションだけで命令を思い出すことができます。しかし、脳だけですべてを覚えておくには限界があるため、多くの人はスケジュール帳、メモ帳などの外部記憶媒体を利用します。これらは意図して消さない限り記載内容は残るため、忘れることを防止できます。しかし、いざ思い出そうとする時には、手帳の該当ページを開き、確認し、脳に記憶するというアクションが必要です。つまり脳にある命令は、実行は容易に行えても記憶できる容量が少なく忘れやすい。逆に、スケジュール帳は命令を実行するまでに時間がかかりますが、逆に忘れにくいと言えます。マイコンでは、脳がRAM(Random Access Memory)、スケジュール帳がROM(Read Only Memory)に該当します。RAMは脳と同じで覚えておける命令の量は少ないですが、高速に処理することができます。また、データを自由に読んだり書いたりすることはできますが、電源を切ってしまうとデータは消去されます。一方ROMは、RAMに比べて覚えられる命令の量は多いのですが、手順を要するため処理が遅いという特徴があります。また、一度書き込んだデータは消去できませんが、電源を切ってもデータが消えないという性質があります。組み込み機器では、このROM、RAMに配置された命令をマイコンが処理することでプログラムが実行されるのです。
ちなみに、命令に応じて「マイコンが実行したいプログラム」を作成(開発)することを、マイコン開発といいます。そのマイコン開発に適している開発環境が、クロス開発です。クロス開発に必要なハードウェアのツールとしては、開発に使用するパソコン、マイコンボード、接続用のデバッグケーブル、ICE、エミュレータなどがあり、ソフトウェアのツールとしては統合開発環境、OS、ライブラリ、ミドルウェアなどがあります。

マイコンあっての今なのです

マイコンがプログラムを処理する手順やROM、RAMに関して理解して頂けたでしょうか。前回のコラムでも記載しましたが、マイコンが登場し、プログラム(組み込み機器向けのファームウェア)が搭載されるようになったからこそ、今のようなコンパクトかつ多機能な組み込み機器が世の中に存在していると私は思っています。マイコンは各社が利用シーンに応じて複数のパターンのマイコンを発売しています。例えば、マイコン分野で高いシェアを誇るルネサスが製造したシリーズについて。H8ファミリは組み込み市場をターゲットにしたマイコンで、いわゆるCISCアーキテクチャにあたります。ARMコアを活用したRZファミリは「高速・高性能」を謳っています。同じ組み込み機器向けでも、自動車や通信(携帯電話など)、産業用、設備など多岐にわたる分野で応用されているのが、R8Cファミリ。ROM効率が高く、高処理能力、低消費電力を実現するとともに、開発環境を安価に提供しているため開発費の削減や開発期間の短縮にも一役買っています。

現在、多くのデジタル機器に組み込みマイコンが搭載されていますが、それだけにデジタル機器を展開している企業の競争は激化し、機能性の向上やスマート化、低消費電力をいかに効率よく低コストで実現できるかが問われています。汎用マイコンは多様化している一方、処理速度や電力削減、コンパクト化に限りがあるのがネック。そこで、他社との差異化を図るため、最近ではFPGAを導入する企業が増えています。ここでFPGAについて少し触れておくと、マイコンもFPGAもハードウェアであることに変わりはありません。しかし、マイコンメーカーが製作したCPUや周辺回路といったハードウェアがすでに組み込まれているマイコンは、ユーザーが自由にハードウェアの設計を行うことはできません。一方で、FPGAはハードウェア部分をユーザーが好きなように変更することができます。そのため、ひとつのFPGAに対して必要なハードウェアのみを搭載することができるというメリットがあります。そのほかFPGAには、リアルタイム処理に優れている、低消費電力、基板面積の削減が可能、割り込み処理による遅延が少ない、低コストといったメリットがあり、特に医療機器の開発において重宝されています。開発者の方は、開発しようとする組み込み機器の用途や求めるパフォーマンスに応じて、マイコンもしくはFPGAを選択してみてはいかがでしょうか。

※今回のコラムは理解度を優先するために、概念的な説明になったかと思います。人間のこと、脳のことを詳しく研究されているような学者様が読むと、いやいや間違っているよといった内容はあるかと思いますが、その点は説明の1手段としてご理解いただけると幸いです。

個別相談も承っております。下記よりお申し込みください。

個別相談会申し込み

関連記事

OTHER COLUMN

MORE  

まこちゃんブログ

NEWS

MORE  

PARTNER

  • Intel
  • Xilinx

お探しの組み込み製品はキーワードで検索!