計算をし、命令を実行し、コンピュータの各部との間で情報を転送するコンピュータの一部である。メモリやI/Oポートと協力関係にあり、それら3つが[[マイコン]]の基本構成である。PCのようなマイクロコンピュータにはマイクロプロセッサ([[マイコン]])と呼ばれるシングルチップのCPUが搭載されている。[補講]マイクロプロセッサとは、制御装置+論理演算装置(ALU)+入出力回路(I/Oユニット)を持ち合わせているものである。最近はCPUとマイクロプロセッサが区別なく使われることが多い。プロセッサ(CPU)はコンピュータのいて制御と演算を担当する中核部分である。プロセッサの構成要素はアーキテクチャ(設計)によって異なるが、基本的には次のようなものから構成される。CPUに入力されたら、演算装置で計算し、場合によっては[[バス]]経由で[[主記憶装置]]([[メモリ]])などにアクセスし、最終的に出力する。した動きは制御装置でコントロールされている。CPUはコンピューターにあたえられた命令を順次実行していくハードウェアの一部分で、メモリの情報を読み書きする機能(I/Oユニットによる)と、実際に命令を実行する機能(論理演算装置による)、それにコンピュータのほかの各部分にそれらの振る舞いをつたえてコントロールする機能(制御装置による)を持っている。[#f4eb9544]+2元符号化方式:すべての情報(プログラムとデータ)を2進数に変換して処理すること。+プログラム内蔵方式:コンピュータへの指示命令をプログラムに書き換え、そのプログラムをメモリに記憶させること。+逐次【チクジ】制御方式:プログラムの命令をひとつずつCPUに取り出し、処理を順番に進めること。''プログラム記憶方式(ノイマン型)''とは、命令をメモリから取り出してプロセッサによって逐次実行する方式である。現在の多くのコンピュータはこの方式を採用している。ノイマン型の特徴はプログラムとデータを同一のバス上のメモリに格納されるということである。なければ、メモリを増設するときに、プログラム用メモリとデータ用メモリを区別して購入ことになってしまう。普通に自作するときはそのようなことは考えないだろう。それは自作しようとしているパソコンがノイマン型だからだ。プログラムが格納するための専用メモリとデータを格納するための専用メモリを区別する方式のコンピュータも存在する。それを''ハーバード型''と呼ぶ。した方式が存在するにはそれなりの理由がある。マルチメディアの処理をするときは1プログラム命令に付き、数十万のデータになってしまう。したときはプログラムとデータを同居させておかないほうがよいのだ。同居させてしまうと、遅い車(命令)と速い車(データ)を道路(バス)を走らせているようなものだからである。実際にDVDプレイヤー内のCPUはハーバード型が多い。現在我々が使っているコンピュータの動作原理は、数学者アラン・チューリングが[[チューリングマシン]]と呼ばれる数学的モデルという形で示しました。ENIACでは、プログラムはハードウェアレベルで、即ち回路の配線を変えることで行われた。今のプログラム内蔵式コンピュータは、データを格納していたメモリにプログラム自体も格納して、必要に応じて呼び出している。現在実用化されているコンピュータは、全てプログラム内蔵式コンピュータである。主記憶装置に格納されているプログラムを実行するには、プログラムカウンタに格納されている「命令のアドレス部のデータ」から、目的のデータが格納されているアドレス(有効アドレス)を導き出す必要がある。このようなアドレスを指定する方式には次のようなものがある。-即値アドレス指定方式(即値オペランド指定方式)--アドレス部の内容=目的のデータそのもの--定数を演算装置に送る場合に用いる。-絶対アドレス指定方式(直接アドレス指定方式)--アドレス部の内容=目的のデータの格納されているアドレス-間接アドレス指定方式--目的のデータの格納アドレスを主記憶上のアドレスに格納する方式。オペランドとは処理の対象となるデータのことである。+命令フェッチ(取り出し)++PC((プログラムカウンタ))の内容をMAR((メモリアドレスレジスタ))へ転送する。++MARで指定されたアドレスを選択肢、それに格納されたデータ(命令)をMDR((メモリデータレジスタ))へ読み込む。++MDRの内容をIR((命令レジスタ))に転送する。+命令デコード(解読)++IRに格納された命令のうち、命令コード部をデコーダによって解読し、実行する演算の種類を判別する。++その演算を実行するのに必要な演算回路を選択する。+オペランドフェッチ(オペランドの取り出し)++IRに格納された命令のうち、アドレス部(アドレス修飾部なども含む)を用いてオペランドの有効アドレスを算出し、MARに転送する。++MARで指定されたアドレスに従って、メモリからオペランドをMDRに読み込む。+命令実行および結果格納++演算回路を用いて各種レジスタおよびMDRの内容を用いた演算を行うように、演算装置に制御信号を創出する。++演算結果をGR((汎用レジスタ))やメモリに格納する。++次ステップの準備として、PCの値を「次に実行すべき命令が格納されたアドレス」に変更する。[補講1]実際には命令フェッチ時にPCの値を自動的にインクリメントするように設計されることが多い。[補講2]ステップ2のデコードではデータの格納されているアドレスを計算する(これを''実効アドレス計算''という)。その方式にはアドレッシングモードなどがある。[#rbcde278]・プロセスルール(製造プロセス、デザインルール)とは、半導体製造装置で作製できる配線の間隔である。・プロセスルールが微細化すると、1枚のシリコンウェハーからより多くのCPUコアが採れ、ゲート長(トランジスタのON/OFFを切り替えるスイッチのサイズのこと)が短くなるため、高速に動作することでパソコンの命令実行速度が高まり(クロックが上がり)、また動作電圧が低く抑えられるために消費電力や発熱の低減にも寄与するので、コンピュータのCPUの製造メーカーは、開発に力を入れている。・しかし、デメリットもある。ひとつに、製造コストの増加が挙げられる。動作クロックをいくら上げても、内蔵するトランジスタのスイッチング速度(ゲート電極部分に反転層を生成し、電気を通すようになるまでの速度)が追いつかずに限界に達してしまった場合、解決策はプロセスルールの微細化によるスイッチング速度の向上以外にないので、必ずしもデメリットとはいえない。Computer)''の2種類がある。この2つの違いは、処理する命令が単純か複雑かという点にある。RISCの扱う命令はCISCの命令よりも単純である。命令が単純なほうが高速な動作をすることになる。いっても処理内容によっては複雑な命令を使ったほうが効率的なこともある。RISCは単純な命令だけなので、各命令の命令実行時間がほぼ等しい。これは次の命令を先読みして並行処理するという高速化方式である[[パイプライン方式]]に向いている。CISCでは必ずしも命令語の長さが同じというわけではない。このようにCISCの1命令は複数のRISC命令で実現される。そのためにRISCでは命令数が多くなり、[[コンパイラ]]の良し悪しが実行効率に大きく影響してくる。PC/AT互換機とよばれるパーソナルコンピューターではCISCが使われている。これ以外のコンピューターでは、現代的な高速化技術を実装しやすいことからRISCへ移行しつつある。|RIGHT:|COLOR(#FF0000):CENTER:''RISC''|COLOR(#FF0000):CENTER:''CISC''||LEFT:''CPUの構造''|LEFT:比較的単純|LEFT:比較的複雑||LEFT:''命令の数''|LEFT:少ない|LEFT:多い||LEFT:''命令の実行時間''|LEFT:短い|LEFT:長い||LEFT:''命令の実行方式''|LEFT:ワイヤードロジック制御|LEFT:マイクロプログラム制御((機械語命令を、制御メモリ内に格納された基本操作命令の組合わせで実現する。))||LEFT:''特徴''|LEFT:命令の実行時間が等しいために、パイプライン方式に向いており、処理を高速化できる|LEFT:命令の実行時間が均等にならず、パイプライン方式に不向きなため、処理を高速化しにくい。CPUの性能を比較する場合つかわれる単位は、CISC対CISCの場合は外部クロック周波数((クロック周波数とは、コンピュータの動作の基準となる信号(クロックパルス)の1秒間当たりの生成回数のことである。200MHz(メガヘルツ)」と書いてある場合は、外部クロック周波数が200MHzであり、この数字が大きいほうが性能が高い。RISC対RISCの場合は、MIPS(ミップス。Secondの略)という単位をつかう。これは1秒間に何万回の命令を処理できるかをしめす値である。ちなみにインテル社のPentium(ペンティアム)プロセッサーは150MIPSをこえる性能をもっている。CISC対RISCの場合は、根本的構造の差から単純に数値で比較するのはむずかしく、一般的にはベンチマークテストをおこなって比較する。現在のプロセッサはクロックというパルス波に同期してチップ全体が一斉に動作するようになっている。このようなプロセッサを''同期式プロセッサ''という。プロセッサの動作原理が同じであれば、マシンサイクル時間(=クロック周波数の逆数)が短いほど、即ちクロック周波数が高いほど、そのプロセッサのスピードは速いことになる。単純にクロック周波数を上げることはできない。プロセッサによる演算の基本的な動作は、レジスタ間のデータ転送である。このデータ転送にかかる時間を''遅延''という。遅延と一言でいっても色々ある。ここで問題になるのは配線遅延とゲート遅延である。前者はプロセッサの中の配線を信号が伝わるのにかかる時間のことで、後者は信号がトランジスタでできた論理回路(論理ゲート)を通過するときにかかる時間のことである。半導体の微細加工技術が上がるにつれて、ゲート遅延は減少してきた。ところがそれと同時にプロセッサのチップサイズの拡大によって、配線遅延が大きくなっているのである。この遅延のせいで、マシンサイクル時間はそのプロセッサにおける遅延よりも長く余裕を持って設定しなければならない。遅延の状況は回路内の経路によってまちまちである。よって同期式の場合は遅延がもっとも大きい経路がそのプロセッサのスピードを決定してしまっているといえる。同期式プロセッサには遅延がスピードに影響してしまうという問題があった。これを解決すべく同期をしないというアイデアのプロセッサが''非同期式プロセッサ''である。非同期式ではレジスタやメモリにデータを書き込む際にクロックを使わないのである。クロックを使わずに要求・応答という方法を使う。非同期式プロセッサだと全体のパフォーマンスが最大遅延に左右されることはない。クロック信号の分配の問題もなくなる。頻度で重み付けされた局所ごとの遅延の平均できまるのだ。半導体加工技術の進歩によるゲート遅延現象の効能を教授することができる。CPUがインテルの独占状態にあるのは、メーカーやユーザーにとって、かならずしも歓迎できることだけではない。供給元が1社だけでは、価格の上昇や安定供給に、どうしても不安がのこるからである。そこで、互換CPUの役割が大いに期待されるのだが、これまでの普及は今ひとつといったところである。ペンティアムとピン互換のCPUとしては、アメリカのサイリックス社の「Cx6x86」や、AMD社の「5k86」などがある。サイリックス社のCx6x86は、クロック周波数が同一のペンティアムよりも高性能ということをセールスポイントにしている。200+はクロック周波数が150メガヘルツでありながら、200メガヘルツのペンティアムと同等以上の性能を発揮するといわれる。これは整数演算に関してであり、浮動小数点演算はペンティアムより低速である。AMD社の5k86は、クロック周波数が同一のペンティアムとほぼ同じ性能でありながら、内部的にはまったくことなるアーキテクチャーを採用し、価格を大幅にやすく設定した互換CPUである。1997年になって、AMD社は最新のK6を出荷した。これは、ペンティアムプロと同等の性能を、ペンティアム互換のピン配列で実現したという、新世代の互換CPUである。MMX)に完全対応しており、クロック周波数が同じMMXペンティアムと、同等かやや高性能になっているといわれる。注目されるのは、ペンティアムシリーズよりも高度な半導体製造プロセスを採用したことで、これによってチップ面積を小型化し、低消費電力が実現されている。インテルのプロセッサーよりも、1ランク上のクロック周波数をもった互換CPUを、先行して提供できるともいう。事実、最初の出荷で、ペンティアムシリーズにはない、233メガヘルツのものが登場した。ペンティアムシリーズより、かなり低価格に設定されている。ペンティアムプロの後継CPUであるペンティアム2は、形状がカセット式にかわって、従来のマザーボードがつかえなくなった。K6は従来のマザーボードのソケット7でつかえるため、この点での有利さもある。サイリックス社も、MMXペンティアムと同等の機能をそなえたM2の量産を開始する予定である。CPUは外部デバイスに直接アクセスせずに、中間デバイスであるチップセットを通してデータ交換を行う。したデータの入出力を行うために用いる、マザーボードのチップセット上に置かれているポートのアドレスのことを、''I/Oポートアドレス''という。このI/Oポートアドレスは16ビットで構成されており、通常4桁の16進数で表記される。LinuxにおいてI/Oポートアドレスの割り当て情報を確認するためには、コンソール上で次のように入力すればよい。人間の脳は意識を生み出す臓器である。脳といっても物質の一種なので、コンピュータ(従来のコンピュータで可能とは限らない)で模倣できるのではないだろうかと思う人もいるはずだ。脳の中には1,000億個のニューロンが、ある時間と空間のパターンで活動すると、なぜかわかっていないが意識が生じるのである。「コンピュータは脳のように意識を生み出せるのか」という問題を解決することは、人間とは何かという本質に繋がるといえる。パーセプトロンや逆誤差伝播法という概念を利用することにより、人間の脳のパターン認識という一点だけ取れば、コンピュータもそれに匹敵する能力を持つに至る。コンピュータの中の情報の同一性は、コンピュータの外からその動作を見ている人間の認識の能力によって支えられている。わかりやすくいえば、コンピュータの中で扱われている0と1からなる情報の意味は、コンピュータ内部では決まらなく、その意味はコンピュータを外部から観察・設計した人によって決められているということである。我々の脳は、外からそれを観察する存在も、ホムンクルス(脳の中で情報をモニターする小人)もなしに情報の同一性を支えているのだ。現在の我々には想像することができないやり方でホムンクルスを擬似的に復活させることでしか同一性を始めとする脳における認識の新しい問題解決されないのではないだろうかと考える学者もいる。[#ge9b8bd9]-CPUはスリープや実行可能な状態のプロセス(スレッド)があるから。-例えば、I/O中にプロレスがスリープになることがあるが、I/Oの速度は変わらないので、CPUの速度が2倍になってもアプリケーションの処理速度は2倍にならない。[#qe08d861]-SYS(sy)--カーネルが使用した時間の割合を示す。Time」と表示される。-USER(us)--ユーザーが使用した時間の割合を示す。---OSから見たユーザーアプリケーションが使用した時間の割合といえる。---ただし、ユーザーアプリケーションがOSを呼び出す際にカーネル内部で発生する処理はSYSに入る。-IDLE(id)--CPU上で処理されているものがないことを示す。I/Oとして「I/O中」を表すものがある。[#qbd7ee47]-CPUが一般保護違反のようなエラーを検出した場合、割り込み命令を発生させる。--この割り込みのことを、''例外処理''という。--割り込みによって実行するプログラムとしてエラー処理のプログラムを作っておけば、エラー発生と同時にエラー処理プログラムが働いて処理してくれる。-エラー検出機能によって、呼び出されるエラー処理プログラムもプログラムなので、エラー処理プログラムにエラーがあればどうしようもない。--そこでエラー処理プログラムは特別に念入りにチェックされバグを排除し、極めて信頼性の高いものに仕上げておく。-CPUのエラー検出機能は特権機構と協力関係にある。[#h4d8bf34]-例えば割り当てられた範囲外のメモリを使ってしまうような誤動作があった場合、エラー処理プログラムの入っているメモリ範囲まで壊してしるかもしれない。すると、エラーによって呼び出されたエラー処理プログラムでエラーが発生するようになり、役に立たずに暴走してしまう。これではせっかくのエラー検出機能が役に立たない。-ほとんどのCPUには、エラー検出機能と共に特権機能を持つ。[#w879292a]-例:Intel社のCPUにはリング0〜4の4段階の特権レベルがある。|リング0|最高の特権||リング1|2番目の特権||リング2|3番目の特権||リング3|最低の特権|-すべてのプログラムにはあらかじめ特権レベルを設定することになっており、設定された特権レベルによって、そのプログラムで使える命令やメモリの範囲が異なる。-最高の特権レベルであるリング0に指定したプログラムは、CPUの持つすべての命令とメモリを利用できる。--他のプログラムが使用中のメモリも参照できるので、他のプログラムのチェックや修正をするプログラム(例えば、エラー処理のプログラム)も作ることができる。--最高レベルであるリング0の設定でエラー処理プログラムを作っておけば、リング1〜3に設定されたプログラムで不正な処理が行われても、エラー処理プログラムまで壊される心配はない。-Intel社のCPUにはリング0〜3という4段階の特権レベルがあるが、実際には2段階の特権レベルで十分実用になる。--Windowsが利用している特権レベルはリング0とリング3の2つだけである。---リング0の特権レベルと持つプログラムを''カーネル''、リング3の特権レベルのプログラムを''ユーザープログラム''という。--[[Windows]]が利用している特権レベルはリング0とリング3の2つだけである。---リング0の特権レベルと持つプログラムを''[[カーネル]]''、リング3の特権レベルのプログラムを''ユーザープログラム''という。---Windowsが2つの特権レベルしか使わないのは、WindowsがIntel社のCPU専用ではないからという理由がある。少なくとも2つの特権レベルがなければ、特権機構を実現できない。第1種』-『絵で見てわかるOS/ネットワーク/ストレージ』-『ウィンドウズの仕組みがわかるとトラブルに強くなる。