このページの本文へ

前へ 1 2 3 4 次へ

ロードマップでわかる!当世プロセッサー事情 第67回

CPUアーキテクチャーの進化

CPU高速化の常套手段 パイプライン処理の基本 【その1】

2010年09月06日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/)

  • この記事をはてなブックマークに追加
  • 本文印刷

 今回はCPUのパイプラインについて説明をしてみたいと思う。だがその前に、デジタル回路の基礎を、ちょっとだけ復習しておきたい。

そもそもゲートとはなんぞや?

 デジタル回路ではよくGate(ゲート)という用語が出てくる。ゲートという用語は非常によく使われるが、大別して2つの意味がある。ひとつは「門」としてのゲートで、例えばトランジスター内部の電圧制御を行なう部分を指す。「ゲート酸化膜」だの「HKMG」(High-k Metal Gate)だのというのがこちらである。「Clock Gating」とか「Power Gating」も同様で、こちらはクロック信号や電力供給回路の「門として作用する回路」の意味だ。

 もうひとつの意味が、「デジタル回路の最小単位」の意味である。デジタル回路の最小単位と言えば論理回路のことで、NOT/AND/ORという3種類の演算と、0と1(もしくはLowとHigh)の2種類の状態値で論理を記述するものである。CPUではあまり縁がないが、ASICとかFPGAなどで「ゲートアレイ」とか「XXX万ゲート相当」なんて言い方をするときのゲートがこれである。

 普通はNAND回路もしくはNOR回路1個を1ゲートと呼ぶが、最近はもう少し複雑なものを1ゲートと表現する場合もある。この1ゲートを何トランジスターで実現するかというのも、これまた製品によって異なっている。CPUのように回路の最適化を図ったものでは、数個のトランジスターで実現できるが、ASICなどでは数個~10個近く、FPGAではへたをすると数十個が必要だったりする。これは各々の製品の特性によって、ゲートそのものに求められる要求が異なるためだ。

 それでは「ゲートで何ができるの?」というひとつのサンプルが、図1である。これは「RSフリップフロップ」、もしくは「RSラッチ」などと呼ばれるもので、左の「Set」にHighを入れると出力がHighを、左の「Reset」にHighを入れると出力がLowを維持するというものである。要するにSRAMの1bit分だと思えばよい。

図1

図1 基本的なゲートの仕組み

 RSフリップフロップは非常に原始的で、しかもいろいろ問題もあるので、一般にはもう少し複雑なものを使う。だがゲート回路でSRAMを作る場合、2ゲートほど必要になる、ということがおわかりいただけよう。演算回路なども、こんな感じでさまざまなゲートを組み合わせて構成される。ただし、複雑な演算をさせようとすると回路が一段ではすまなくなるので、図2のように複数の回路を順につなげる形で実現することになる。

図2

図2 複数の回路の組み合わせ例

 さて、図2のように複数の回路が連結されている場合に問題となるのは、遅延である。図2では、入力に対して「A→B→C→D」という4つの処理が行なわれるのだが、ここで「DはAの出力とCの出力の両方を必要とする」なんて場合がある。問題は、A/B/Cともに、入力後「ほんの少し」経過してから出力されるため、時間軸で見るとどんどん遅くなってくる。そこで問題となるのはDの入力で、Aの出力とCの出力のタイミングが微妙にずれているので、Dが正しく動作しない場合がある。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン