SSブログ
前の10件 | -

AI向けGPU紹介(NVIDIA) [プロセッサ]

AI処理向けのCPUについて、紹介してきましたが、GPUについても確認していきます。まずNVIDIAについて見ていきましょう。

NVIDIAはGPUのAI処理向けの転用を始めた先駆者ですが、そもそもの始まりは2006年にCUDAコアという汎用演算モジュールを作り、汎用利用できるハードウェア仕様に整備し、積和演算等の演算を並列処理で実行できるようにしたのが最初です。

それがAI処理向けに大きな効果があることが実証され、一気にAI処理ハードウェアを代表する存在となりました。NVIDIAのGPU製品には主に三種類のカテゴリーがあり、データセンター&クラウド(Tesla)、プロフェッショナル・グラフィックス(Quadro)、ゲーミング(GeForce)のそれぞれでAI用途に使えるGPUがあります。

安価で入手しやすく開発用に取っ掛かりとして利用しやすいのがゲーミング向けのGeForceで、データセンターなど大規模に機械学習する必要がある用途にはデータセンター&クラウドのTeslaが使われます。プロフェッショナル・グラフィックスのQuadroは主に開発向けのワークステーション用、という位置付けのようです。

また、深層学習などの機械学習用途には以下のアーキテクチャが導入されています。まずはTesla系列では、以下のアーキテクチャが導入されています。

・2012年 Kepler (K80)
AI向けにリリースされた最初の世代です。K40、K80、K5000、K6000等が該当しますが、さすがに今はあまり見かけません。

・2014年 Maxwell (M40他)
こちらは時々見かけます。また低コストの開発用としてJetson Nano等で採用されています。

・2016年 Pascal (P4 P40 P100)
現役でかなり出ており、PCでの標準的なAI用途ハードウェアとしてはまずこれらが出てきます。

・2017年 Volta (V100)
現行の最上級機種というとこちらになります。最新に近い製造プロセスで最大サイズのチップ仕様となっているので、まだ単品で買おうとしても一台100万円を超えてしまいます。

・2018年 Turing
こちらは2019年春時点では、Tesla系列では製品は出ていないようです。

次にゲーミング用のGeForceですが、特によく出てくるのは
・2016年 Pascal (GTX1080等 TITAN X)
デスクトップで低価格のAI向けマシンを入手しようとするとよくこのGPUが使われます。

・2018 Turing (RTX 2080Ti)
 これは最近出たもので、アーキテクチャが従来とかなり変わっており、AI関連の処理も得手不得手が今までとかなり変わっている可能性があります。各開発環境への適用の可否や引き出せる性能を確認しておきたいものです。

一般的には、本格的な開発向けはP40、P100を使えばかなり性能が期待できます。また、
テスト用、簡単な開発用ではゲーミングの
GTX 1080 TITAN X TITAN Vで十分、と言ったところです。

GPUのハードウェアが無くてもソフトウェアベースでは機械学習用途に使えないことは無いのですが、性能が大きく落ちますので、効果のあるGPUを使用するようにした方が良い、ということになります。

PCのサイトでのAI向け推奨モデルを二機種紹介します。まず、HPのサイトではHP Z4 G4が小規模機械学習処理用として推奨されています。

HPのベストセラーワークステーション。 100GB以下の小規模機械学習処理向け
iconただ、推奨GPUがP5000で1基載せるだけでPCの価格が50万円近くなります。メモリ容量ももっと積まないと性能を発揮しづらいでしょうし、トータル価格としては結構な値段になってしまいます。GPUは電力を消費するので筐体の電源容量も気にする必要があり、じっくり確認して仕様を決めていきたいものです。
次がDELLのサイトの推奨モデルです。

DELL 5820 タワー 推奨モデル 295,980円


一見、こちらの方が安いぞ、となりそうですが、GPUはP1000でHPよりグレードがかなり落ちます。また、メモリもストレージも容量が少なく、どうみても追加が必要そうです。その辺の補強をすると結局似たような値段となってしまうのですが、GPUはP1000で頑張るとして、メモリは様子を見ながら増強したい、という場合は使えそうです。GPUがまだ追加できるのでその意味でも能力増強に対する考え方次第で、こちらを選択する手もあると思います。



nice!(0)  コメント(0) 

CPUのアーキテクチャ紹介(MIPS) [プロセッサ]

AI用途や5Gを含む次世代ネットワーク処理で今後もCPUへの性能向上は求められ続けると思いますが、そのときに各CPUアーキテクチャでどのような特性が性能に寄与するか、ポイントを絞って簡単に説明してきました。
Intel CPUでの特性はintel CPUの特性に書いてある通り、プログラムのサイズが小さくなること、ARM CPUでの特性はARM CPUの特性で述べている通り、低消費電力や低コスト化に優れている点があります。今回は、最近はあまり見かけなくなりましたが、MIPSアーキテクチャの特性を見てみます。

MIPSアーキテクチャは本格的なRISC(縮小命令セットコンピュータ)のプロセッサとして1980年代に登場したプロセッサです。もともとスタンフォード大学で生まれたプロセッサなので、非常に整理された命令セットを持ち、RISCの理論に忠実に実装されたプロセッサとなっていました。

最初は32-bit CPUが生まれ、1991年には世界初の64-bitプロセッサが誕生しています。このMIPSを特徴付けるのは、とにかく簡素であることです。それがCPUとして設計されたときの回路構成の簡素化に結び付き、非常に小さい低コストなCPUを作ることができました。

ある意味、ARMとは違うアプローチで組み込み用途に適した低コストなCPUを提供できたのですが、ARMが消費電力の削減したのにたいして、MIPSは速度向上や性能向上を目指したプロセッサでした。

しかし、Intelを初めとする他のアーキテクチャが6段以上の多段パイプライン化で見掛けの動作周波数を上げるのに成功したのに対して、動作周波数向上が性能向上に必ずしも結び付かないことを十分アピール出来ず、ハイエンドCPUとしては早期に脱落してしまいました。

一方、ローエンド側では低消費電力の強みを持つARMがぶれずに携帯電話などの携帯機器や電池駆動機器に侵食されて勢いを完全に削がれてしまい、会社としてのMIPS社は今は無くなっています。

ビジネスとしての戦略の稚拙さなど、不運なアーキテクチャではありましたが、簡素なために可能だった高性能実現と、シリコンバレー発祥でUNIXとの相性がよくソフトウェアからの性能向上の助けが得られ、早い段階から64-bit CPUを出すなど、低価格で高性能を実現できるアーキテクチャを実現できたCPU構成となっています。

探してみたら、32-bit CPUですが、まだMIPSのボードはあります。アーキテクチャが良いだけにもったいない存在です。

MIPS 32-bit 24K ボード 4,199円(税込)



LinkIt Smart 7688 Duo 開発ボード スマート家電



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

CPUのアーキテクチャ紹介(ARM) [プロセッサ]

Intel CPUのアーキテクチャのシステム構築上出てくる特徴についてポイントを絞って非常に簡単にですが、CPUのアーキテクチャ紹介(Intel)で説明してきました。次にARMプロセッサについて簡単に紹介したいと思います。

ARMプロセッサのもともとの特徴は、とにかくCPUコア部分の回路を小さくする、という点に尽きます。
例えば、演算器が直接使う汎用レジスタは他のRISCプロセッサが31~32本用意していたのに比べ、32-bit時代長い間8本しかありませんでした。汎用レジスタの本数が少ないとCPUが演算に使うデータの出し入れにメモリをいちいちアクセスしなければなりません。

汎用レジスタは遅延なしでデータを準備できますが、メモリアクセスでは4サイクル未満の遅延は考えられません。下手をすると数十サイクルあるいはそれ以上CPUを止めるはめになります。このメモリアクセスの性能面でのペナルティは大きく、性能は諦めた方が良いと割りきりが必要なレベルでした。

また、32-bitの乗除算も一回でできない時代が続いていました。これも平気で乗除算をどんどん使ってしまう高級言語を使ってのプログラミングでは大きく性能を落とす要因となります。

ここまで性能を犠牲にするのは訳があるわけで、ARMは回路規模を小さくし、消費電力も抑えることで、電池駆動など電源容量の小さい低価格組み込み機器への利用を想定してアーキテクチャを決めていったと思われます。

実際、その方針でビジネス的に成功して、今ではスマホ向けのアプリケーションプロセッサとしてもデファクトスタンダードのようになってしまいました。

現在は性能の改善も進んでいて、32-bit CPUでも乗除算は32-bitフルにできるようになっていますし、64-bit演算命令も追加され、性能向上に向けた大きな問題はなくなりつつあります。

そのなかでARMの特徴を考えると、Intelに比べ多数の半導体メーカーの多くの製造プロセスで作られ、Intelが得意ではない比較的低消費電力向けの製造プロセスでも比較的簡単に作れるようになっている点があげられます。

結果として、性能向上によって回路的なメリットが小さくなっているにも関わらず、未だに低消費電力向けには強いCPUとなっていると思います。

今後の5G対応を含めたネットワーク処理機能の強化やAI対応で、情報機器のメインCPUの64-bit CPU化は将来的に必須となることでしょう。その内容を理解し、活用していくための題材として、現段階で一番お薦めなのは、しつこいようですが、やはりこのRaspberry Piとなると思います。
Raspberry Pi 3 model B
5,100円(下記アマゾンでの購入価格、税込)

Raspberry Pi 3 MODEL B
Raspberry Piはもともと教育用から発展しているので、関連資料や情報も多く、比較的トラブルなく使えると思います。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

CPUのアーキテクチャ紹介(Intel) [プロセッサ]

CPUのアーキテクチャについて考えて行く際に、実際に使用されているアーキテクチャについて把握することが現実的な問題を把握するのに大きく役立ちます。全体的な概要についてはCPUにおけるアーキテクチャの違いに記述していますが、ここでは、まず既存の各CPUのアーキテクチャについて確認して見ます。
まずは、Intelを見ていきたいと思います。半導体チップとしてのCPUの歴史を考えると、実はそのままIntelの歴史となります。1971年に当時の日本の電卓メーカーだったビジコン社と共同で開発したのが世界初のCPUのi4004だからです。4-bit CPUでしたが、確かにCPUでした。

現在のIntelのCPUに直接つながって来るCPUとなると、その数年後に開発された8-bit CPUのi8080になります。実はこのi8080に実装された命令セットが、現行のIntelのCPUの8-bit命令になっています。

逆に言うと、IntelのCPUは40年以上前の命令セットを今も引きずっているのです。その結果、現在ではあまり使われない命令を実装することになったり、8-bit命令が動作するアドレス空間の維持が必要です。

そのため、命令セット互換性維持のため無駄に近い回路を実装し続ける必要があり、またアドレス空間も番地指定するフィールドを継ぎ足ししてオフセットの上位アドレスの番地を指定できるようにするなど、アセンブリ言語として直接扱う命令セットとしては、かなり複雑なものになってしまいました。

ただ、幸いなことにIntel CPUのメインの用途はある程度規模の大きいパソコン向けですので、8-bit命令を少し無駄に実装してもCPU全体の回路規模に比べ非常に小さく無視できる程度です。

また、8-bit命令までサポートすることで強力な互換性が生まれ、今日のPC向けのCPUのデファクトスタンダードであるIntel CPUが誕生したわけで、製品全体の商品戦略としては非常に成功した訳です。

また、実はこの8-bit命令、Intel CPUの動作周波数の高速化に非常に貢献しています。8-bit命令は二進数でたった8桁で実行を終了します。従って、高速のクロックで動作させることが出来ます。

一方、32-bitや64-bitなど時間がかかる演算は無理に1クロックで実行しなくてもマルチサイクルをかけて複数クロックで実行します。よくIntel CPUで2.5GHzとか3GHzとか高速のクロック周波数で動作させるのは、実は8-bit命令など一部の命令だけなのです。

ちょっとインチキではないかと思われるかと思いますが、そもそも浮動小数点命令はどのCPUでも1サイクルで実行できる命令はほとんどありませんし、現状はこのからくりで動作周波数が定義されてしまっています。

Intelのアーキテクチャをより詳細に見たいときは、ちょっと本格的ですかこちらがお薦めです。



コンピュータの構成と設計 第5版 上 4,536円(税込)



コンピュータの構成と設計 第5版 上



コンピュータの構成と設計 第5版 下 4,536円



コンピュータの構成と設計 第5版 下

また、アーキテクチャのポイントは継続して説明していきたいと思います。


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

CPUにおけるアーキテクチャの違い [プロセッサ]

世の中でよく使われてきたCPUはIntel、ARM、ちょっと前だとMIPSやPowerPC、Sparc、SHなど、何種類かありましたが、なぜいくつもの種類があるのでしょうか?
これらを種類分けしている分け方がコンピュータ・アーキテクチャと定義できると思いますが、具体的にはCPUのハードウェア構成やソフトウェア処理の定義の仕方、さらにはそれらを用いたコンピュータ・システムの構造を、コンピュータ・アーキテクチャと呼んでいると思います。

本当は一種類あれば十分と言いたい所ですが、このCPU構造の違いが、コンピュータの性能や機能など、特性面に大きな影響を与えます。また、CPUがソフトウェア資産を持ち、将来的にも使われる可能性があるという特性上、一度アーキテクチャを決めるとなかなか変更が難しいものとなっています。

これらコンピュータ・アーキテクチャの中で、主なアーキテクチャとしてIntelとARM、最近はあまり出てきませんが、研究用としてよく使われてきたMIPSを中心に紹介していきたいと思います。
PC用途でよく使われているのはIntelになると思います。Intelは最も古いアーキテクチャですので、今はあまり意味のない古い構造を含め互換性維持のため搭載されているため、ARMなどより無駄な回路も多くなっています。
その代わり40年以上に及ぶ命令セットの維持と拡張に成功しており、既存のソフトウェア資産を活かしながらCPU性能を向上させて来ています。そのため、ソフトウェア資産を重視するPC向けとしては圧倒的な競争力を持っています。
一方、ARMは回路規模や消費電力をできるだけ削減したアーキテクチャを持っています。また、Intelほど歴史が無いため、旧来のアーキテクチャを継承する必要もなく、無駄のない構成が可能で、さらに回路規模の抑制に磨きがかかったものになっています。

従って、ARMはモバイル用途など電池駆動を中心とした低消費電力のCPUとして、こちらも圧倒的なシェアを持っています。次回からより詳細に見ていきたいと思います。

基本的な勉強からしてみたい人はこちら。



ディジタル回路設計とコンピュータアーキテクチャ[ARM版] 5,400円




ディジタル回路設計とコンピュータアーキテクチャ[ARM版]



内容的にしっかりしていてお薦めです。エレクトロニクス系の雑誌に載っているレベルだと結構間違いも散見されるので、その意味でも良い本だと思いました。

nice!(0)  コメント(0) 

CPUにおける64-bit化の課題 [プロセッサ]

64-bit CPUと32-bit CPUの違いの概要については前回のCPUにおける64-bitと32-bitの違いで説明した通りです。
基本的には32-bit CPUよりは64-bit CPUの性能が高くなる方向ですので、できるだけ64-bitのCPUに移行していけば良いわけですが、64-bit CPUを作る側に回るとなかなか作れない事情があったりします。今回はその障害となる部分を説明したいと思います。

1. 64-bit CPUは規模が大きく値段も高い?
まず、そもそも64-bit CPUを作ろうとすると値段が高くなってしまうのかが気になります。それに対する回答は、ある意味本当ですが致命的なほどでもない、となります。

64-bit CPUは64-bit演算器を持ちますが、これは32-bit演算器よりも大きくなります。ざっくり2倍程度にはなると思った方が良いでしょう。でも大きくなるのはここまでです。

通常CPUが持つ汎用レジスタは、同じbit数だけ実装するだけであれば同じサイズとなります。汎用レジスタを完全に64-bit化するのであれば、面積は倍になりますが、それに応じレジスタ性能も向上するので、無駄な増加とはならないはずです 。

高性能プロセッサには付き物のCACHEメモリや仮想空間をサポートするために必要となるアドレス変換ユニットも同様です。命令デコードやそれによるステートマシンの構造は64-bit命令を新たにサポートするには規模が大きくなりますが、それだけでは全体に対する増加量は大きくないと思います。よっぽどスーパースカラ化の方が規模の増加量が大きくなりますが、それは64-bit化とは別の話となります。

2. 64-bit化しても同じ速度(動作周波数)で動くのか?

実は問題となるのはこの点なのです。例えばCPUで足し算をするには32-bitのCPUには32-bitの加算器が必要となりますが、その64-bitの加算器というのが結構大変です。

ただ各桁を足せば良いじゃないかと思われるかもしれませんが、ネックになるのが繰り上がり(Carry)です。最悪の場合、一番下の桁で生じた繰り上がりが64桁先の一番上の桁にまで影響しますので、CLA(Carry Look Ahead)とか高速化のテクニックはありますが限界があり、ひどい場合には64-bit化したら動作速度が30~40%落ちたとかいう話になりかねません。そこまで落ちると64-bit化しない方が性能が良くなってしまうかもしれません。

そのため、現在の64-bit CPUは64-bit演算は数サイクルのクロックで時間をかけて実行することで何とか対応している、という状況です。命令セットの順序をうまく調整できれば、答えが数サイクル後でも直後の命令で使用しないようにスケジュールされていればプログラム自体は止まらずに動いてくれるので
そのような最適化を行うコンパイラで実行して回避することができそうです。

64-bit CPU関連技術の本はなかなかぴったり説明してくれるものがなく、紹介できず困っているのですが、ワークステーション向けのプロセッサ技術としては次のような本があります。

プロセッサを支える技術  --果てしなくスピードを追求する世界 2,786円(税込)



プロセッサを支える技術  --果てしなくスピードを追求する世界 (WEB+DB PRESS plus)


一応、この本で取り上げられているSPARC64は64-bit CPUではありますので、共通の課題もあり、こちらで取り上げているARMをはじめとするPC、モバイル機器、組み込み用途のプロセッサとは性能改善の優先度が高く発想や前提が異なる部分もありますが、1つの参考書になると思います。

この本と合わせてCPU技術を把握する時に読みたい本についても今後紹介していきます。


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

CPUにおける64-bitと32-bitの違い [プロセッサ]

最近は64-bit CPUが入っている機器が珍しく無くなってきました。パソコンに入っているIntelのプロセッサから始まって、ルータなどのネットワーク機器、スマホ、さらには最近AI関連で話題のNVIDIA Jetson Nano、5,000円以下で手に入る教育用コンピュータ・ボードのRaspberry Piまで、色々な所で使われています。
そこで、今回は64-bit CPUと従来の32-bit CPUとの相違点について説明していきたいと思います。

1. 64-bit CPUとは
まず、64-bit CPUの定義をしておきたいと思います。

「一度に64-bitの演算が可能なCPU」一番簡単に言ってしまえばこうなります。一度とは、1つの命令実行で、ということになります。64-bitの演算とは二進数で64桁の整数値同士の演算となります。それが、可能なCPUですから、それ以外の演算が出来ても良いわけです。

一般にbit数が増えるほど演算回路は複雑になり実装は困難になりますから、64-bit演算器は事実上それが最大のbit数となります。128-bit演算が可能なら、そちらの方が規模が大きいので、わざわざ64-bit演算器とは言わず128-bit演算器と言うでしょう。従って64-bit CPUとは実質的には64-bit以下の演算が可能なCPUとなると思います。

2. 64-bit CPUの詳細動作
さらに細かく64-bit CPUの要件を見ていきます。64-bit CPUとは言っても何もかも64-bitにしなければならない、というわけではありません。

例えば、64-bit CPUでは演算で使用するデータや出力データは64-bit長でなければならないですが、プログラムのは構成要素となる命令セットまで64-bitにしなければならない訳ではありません。実際、多くの64-bit CPUの命令セットは32-bit長です。64-bit命令の命令セットへの実装は32-bit長でも表現できるからです。

逆に、64-bitが強制される訳ではありませんが、実際は64-bitにしないと現実的な64-bit CPUにならない仕様もあります。プログラム(命令)やデータを格納するメモリ空間は64-bitでなければならない訳ではありませんが、近年の高性能CPUは実アドレスよりも広大な仮想アドレス空間をサポートしており、32-bit CPUでさえ、32-bit以上のアドレス空間を持つものがあります。

64-bit CPUでは、そもそも64-bit演算が可能ですので、ほとんど性能低下を起こさずに64-bitまで容易にアドレス空間を拡張することが出来ます。従って、64-bit CPUのアドレス空間は64-bitのものが一般的です。

また、データのメモリへのLoad/Store命令は64-bitでなければいけない訳ではありませんが、メモリへのアクセスは時間がかかるため、32-bitのデータを2回読みに行くのは性能低下の一因となります。64-bit CPUを採用する最大の動機は性能の向上にありますので、やはり64-bitのLoad/Store命令をサポートせざるを得ないことになります。

非常に簡単にではありますが、64-bit CPUの定義や一般的構成について説明させていただきました。次回はその64-bit CPUの実装上の障害について紹介していきたいと思います。

これら64-bit CPUの説明をしている本は少ないし、あったとしても記述の量も少ないのですが、ARMプロセッサ向けの説明だと以下の本にも記述はされています。このように関連する本から少しずつ説明を拾って理解に結びつけて行くしか無いようです。今後、他のプロセッサ・アーキテクチャの例についてもできるだけ紹介していきたいと思います。

Interface(インターフェース) 2016年11月号
2,699円(税込)


Interface(インターフェース) 2016年11月号



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

ARM Cortex-A57 [プロセッサ]

ARM Cortex-A57はNVIDIAのJetson Nanoへの搭載が話題となっていますが、概略の構成はどのようになっているのでしょうか。
ARM社は低消費電力で低価格のプロセッサで世界トップのプロセッサIPベンダーです。スマホをはじめとするモバイル機器でARM社のプロセッサのお世話にならないほうが難しい状況です。

そのようなモバイル用途で覇者となったARMプロセッサにも唯一弱点がありました。モバイル向けに強い分、ハードウェアリソースを多く使う64-bitプロセッサがなく、長い間32-bitプロセッサだけで戦ってきたという点です。

64-bitプロセッサでは、最低限64-bit演算処理と64-bitアドレス空間のサポートが必要ですが、そのためのハードウェアリソースがかなり必要です。

さらに、一旦プロセッサアーキテクチャを決めると64-bitか32-bitかの選択を含め既存ソフトウェアや開発環境ツールを一新する必要があり、なかなか64-bit対応できなかったであろうと思います。

そんな中でついに64-bit化に対応したプロセッサのひとつがCortex-A57となります。

A57は64-bit演算をサポートし、物理アドレス空間は44-bitをサポートしています。このクラスのCPUは仮想空間をサポートしていますので、仮想空間さえ64--bitをサポートしていれば、必ずしも物理空間は64-bitなくても問題はありません。

CPU本体のパイプライン段数は15段で結構長めです。分岐命令予測や一次キャッシュのミスなどでパイプライン動作が乱れた場合の性能的なペナルティがかなり大きくなりますので、その対策が重要となります。

並列処理性能については3命令同時のout-of-order実行が可能とのことで、投機実行機能が充実しており、分岐予測機構もかなり実装されていて、パイプライン動作の乱れを抑止しようとしています。

具体的にはブランチ・ターゲット・バッファを持つことで分岐先のアドレスへの遷移が高速に行えるのと、ブランチ・ヒストリー・バッファを持つことで分岐の予測ができる機構を持っています。

ただし、これはどのスーパースカラで並列処理するプロセッサでもそうなのですが、分岐予測が当たる確率はかなりループを回す演算でないとなかなか思うように上がらないので、シングルプロセッサが同じ動作周波数で動くとした場合に比べれば性能は落ちてしまいます。

それでも他のプロセッサアーキテクチャに負けないレベルの性能改善策を作り込んでいるということだけは間違いないでしょう。

動作周波数はNanoに実装したもので1.43GHzのようですがここまでいくと余程ピーク時の演算性能を求められない限りノートパソコンにも使えるようなレベルの性能です。相当高性能なCPUとして位置付けられるプロセッサであることは間違いないでしょう。

より詳細の情報は適宜更新していきます。

注:
ARM Cortex-A57はARM社の登録商標。
NVIDIA Jetson NanoはNVIDIA社の登録商標。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

アセンブリ言語の呼び出し方4 [プロセッサ]

前回、アセンブリ言語を呼び出す時のプログラムの構成について説明しましたが、コンパクトにプログラムを実装したり、高速動作可能なプログラムにするには、メモリやプロセッサのレジスタの特性や命令セットの配置の仕方を理解する必要が出てきます。
メモリは各番地ごとに記憶データを保持していく記憶装着で各記憶データには番地(アドレス)がひも付けられています 。用途を区別するなど事情がない限り、記憶するデータはアドレスが隣り合うよう、アドレス上はある程度かたまりのデータとして置かれることが多いです。
メモリにプロセッサが実行させるプログラムが格納される場合は同じようにアドレス上はひとかたまりのデータとして置かれます。するとそのなかからアドレス値の続く順にデータが命令として読み出され実行されていきます。

nice!(0)  コメント(0) 

アセンブリ言語の呼び出し方3 [アセンブリ言語]

だいぶん長い期間中断してしまいましたが、続きを書かせていただきます。

アセンブリ言語を呼び出す枠組みについてお話ししてきましたが、アセンブリ言語の仕様の話に入っていきます。

アセンブリ言語を呼び出すときの基本的な呼び出し方は、呼び出すプログラムの命令の場所を保存しながら呼び出し先のプログラムに移るCALL命令と呼ばれる命令のよる方法です。
通常のプロセッサはハードウェア的にこのCALL命令の実行機構を備えており、該当するアセンブリ言語を実行した後に元のプログラムに戻る時にRETURN命令という呼び出し元のプログラムの呼び出し命令の次の命令を実行して元のプログラムに戻ることができるようになっています。

ここまで説明した所で、アドレス空間とメモリの構成について理解する必要が出てきます。次回からその説明をして行きたいと思います。



nice!(0)  コメント(0) 
前の10件 | -

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。