マガジンのカバー画像

CPU - パソコンの中心部

29
Apple][に使われた6502を始め、拡張カードに刺して使っていたZ-80、6809などをまとめているうちに、マシン語の学習を思い出していろいろなCPUの記事を書いたので、こち… もっと読む
運営しているクリエイター

記事一覧

固定された記事

CPU - パソコンの中心部

コンピュータの頭脳であるCPU(Central Processing Unit)。プログラムはいろいろなプログラミング言語で作られるものの、最終的にはCPUの命令として実行されるわけです。プログラムの実行速度や利用できるメモリの量などは、このCPUの性能に大きく依存しています。今ではいくつかのグループにまとまりつつありますが、ここに至るまでには実に多くのCPUが登場しました。マシン語または機械語と呼ばれるCPUが直接、実行する命令には、CPUの特徴が良く現れるので、これを知る

8086のセグメントレジスタとメモリモデル

さて一種の仮想アドレスでもある6809向けのMMUの話は以下に書きました。 6829 - 6809用MMU いよいよ286のプロテクトモードに行くのかと思いきや、それに先立って8086のセグメントレジスタの使い方を復習しておきます。 8086 - 今も生き残るアーキテクチャ 8086には8080から引き継いだようなAX/BX/CX/DXという汎用16ビットレジスタとSP/BP/SI/DIといった16ビットのインデックスレジスタを持っています。メモリ空間は20ビットある

6829 - 6809用MMU

仮想メモリの話を以下に書きましたが、いきなり80286の仕組みを解説するには少々ハードルが高そうなので、よりシンプルな6809向けMMUである6829を紐解いて見ようと思います。 プロテクトモード - 仮想アドレスとメモリ保護 6829は6809から出力されるアドレス線のA10~A0の11ビットはそのままメモリと接続し、A15~A11の5ビットをタスクごとに割り当てられたマッピングRAMに書かれたテーブルを引いてA20~A11の10ビットを生成することにより都合2Mのメモ

プロテクトモード - 仮想アドレスとメモリ保護

8ビットCPUな時代、ミニコンなどと比べてマイコンで出来ないこととして、仮想アドレスとメモリ保護がないという問題がありました。仮想アドレスといのは、メモリ素子と物理的に接続されているアドレス線をそのままソフトウェアから見えるメモリアドレスとして使うのではなく、何らかのテーブルなどを使って変換して使えるようにする仕組みで、テーブルを切り替えることによって、同じ物理的なアドレスにあるプログラムやデータを異なるアドレスとして扱うことが出来るようになります。 リロケータブルとバイナ

80386 - 32ビット時代と過去の資産の両立

1985年、ホビーパソコンはMSX2が発表され、PC-9801シリーズは初期の標準機とも言えるVMシリーズが発表された頃、IBM PCは前年にATシリーズを発表し、MS-DOS(PC-DOS)がパソコンの世界を謳歌していました。 そろそろ8086での640Kの壁というのが目立つようになっていて、8086から286への移行も少しづつ始まっていました。286の新しい保護モードを活かしたMS-DOSを拡張したようなOS/2やUNIXのパソコン版とも言えるXENIXも投入され、パソ

命令キャシュというか命令キュー

8ビットCPUの時代はシンプルに、命令の取り込み、解釈、実行と順番に実行していたので、処理能力を上げるためには、それぞれの段階、つまりクロック周波数を上げれば速くなるというものでした。クロック周波数を上げるには基本的には集積度を上げる必要があって、簡単に出来ることではありません。 そこで、クロックを上げる以外の方法がいろいろと編み出されたのです。パイプラインであるとかキャッシュなど、今では当たり前になったものが多いのですが、おそらく最初の工夫は8086の命令プリフェッチでは

8087 - コプロセッサというもの

大型機はもちろんミニコンであっても普通は浮動小数点演算をハードウェアで処理しているのが普通でした(ミニコンではオプションの構成もありましたけど)。何せ計算機なんですから整数しか計算できないなんてあり得ません。ところが初期のマイコンの時代には、ひとつのチップに浮動小数点演算の回路を組み込むには半導体の集積度が足りませんでした。そこでアッサリと浮動小数点演算はソフトウェアで処理することとして、その機能を切り捨ててしまったんです。 まあ、マイコンで処理をする対象で、どの程度、小数

Z-80のその後 - まだ現役の8ビットCPU

8ビットCPUの代名詞とも言われるほどにZ-80は売れに売れました。当然16ビット時代にも覇権を握るべくZ-8000を開発しましたが、Z-80との互換性を捨てたことと、充分に高速に動作しなかったこともあり、インテルに市場を奪い返されてしまいました。 8bitの王道 - Z-80 最後の手作り!?CPU - Z-8000 とはいえZ-80自身の需要は旺盛で、多くのメーカーからセカンドソースが作られ続け、NECのμPD780、シャープのLH5080を始め多くの互換CPUが生

トランスピュータ - 並列処理への道のり

CPUの高性能化は、ムーアの法則に則って集積度が上がることに頼っているところが大きいのですが、いずれ設計上の困難も増大し、その限界が訪れることが予想されました。そこで1980年代に単一のプロセッサではなく複数のプロセッサを組みわせることで性能を上げていこうと、並列コンピュータに特化したトランスピュータというCPUが作られました。 トランスピュータ トランスピュータは、ひとつのトランスピュータでの処理としてはシンプルな命令を高速(当時としては高速な20MHz)に実行すること

65816 - APPLE II GSやスーファミにも使われた6502の後継CPU

ここしばらくCPUの紹介をサボっているのですが、そろそろシンプルなCPUの時代は終わり、説明するにも仮想アドレスであるとか、キャッシュがどうのこうの、バスや入出力であるとか外部プロセッサとの接続なんていう内容が出てくるので、ちょっと脱線をして前提となる話なんかを書き始めています。 とはいえキリが無いので、今回はAPPLE II GSで採用された6502の互換性を維持しつつ16ビットに進化した65816を取り上げます。 APPLE II シリーズは、IIeまでは6502を変

CPUはどうやって動くのか

昔のパソコンはBASICが使えるようになっていることが殆でしたが、自分でゲームなどを作るようになると、そのあまりの遅さにマシン語を覚えて使うようになることが多かったです。そして少しでも処理を早くするために命令を実行するのに必要なクロック数を指折り数えて、プログラムを組んでいました。 メモリを節約するためには命令長の短い命令を使うように注意することはもちろんです。同じような処理であっても使うレジスタによっては命令が長くなるものもあったりします。同じ命令長であっても命令によって

iApx432 それはSF大会の思い出

このCPUを知っている人はいるかもしれませんが、見たことがある人はいるのかな?というインテルの黒歴史CPUであるapx432です。インテルは8086という16ビットCPUを世に送り出した後、次の32ビット時代にはどのようなCPUが必要になるかの検討を始めました。電卓用のCPU屋と揶揄されていたインテルは、来る32ビット時代にはいわゆる本格的なコンピュータをチップに収めたマトモなCPUを作り、モトローラの鼻を明かしたいと考えていたのかもしれません。 時代はまだ8ビットCPUで

80286 - 仮想アドレスとメモリ保護

大型機やミニコンといったCPUであれば、前提条件として多くのプログラムを同時に動作させることを求められていたので、プログラムを格納する実際のアドレスは、その時のメモリの空き具合によって変えたくなるのが普通です。また部分的にディスクなどの高速な記憶装置をメモリの一部とみなすことにより、実際に搭載しているメモリよりも多くのメモリを持っているようにプログラムに思わせれば、デバイスなどの応答を待っているようなプログラムが使っているメモリをディスクなどに追い出して、効率的に実際のメモリ

80186とV30 - 互換性が大切

インテルが初の16ビットCPUとして1978年にリリースした8086ですが、翌年にデータバスを8ビットにシュリンクした8088をリリースして、これが1981年にIBM PCに採用されたあたりから広く使われるようになりました。 8086 - 今も生き残るアーキテクチャ 日本では1982年にPC9801(無印)で、NEC製の互換CPUであるμPD8086が採用され、MS-DOSの普及とともに8086/8088のソフトウェアが急速に整備されて、このアーキテクチャを持つCPUの時