レジスタとは
レジスタとは、フリップフロップを桁の数だけ用意して、クロックの合図が来た瞬間に中身をまとめて入れ替える、演算回路のすぐ隣にある小さな記憶です。 メモリよりさらに内側の、計算そのものが走る場所にあります。
レジスタの役割は、値を覚えることにとどまりません。組み合わせ回路を前後のレジスタで挟めば、出力が落ち着いてからの値だけが次へ渡り、回路の時間が区切られます。設計も検査もレジスタを単位に組むのは、この区切りがあるからです。
過去の入力を出力へ反映させる記憶が、フリップフロップ
Section titled “過去の入力を出力へ反映させる記憶が、フリップフロップ”いまの入力だけで出力が一つに決まる回路を組み合わせ回路、現在の入力に加えて過去の入力で出力を決める論理回路を順序回路1と呼び分けます。過去を現在の出力へ反映させるには記憶が要り、その記憶を担う素子がフリップフロップです。
順序回路が状態を覚えるために最も広く使われている素子がフリップフロップで、その土台になる回路がSRラッチです2。SRラッチはQ=1とQ=0という二つの状態を持ちます。Sを1にすればセット、Rを1にすればリセットで、両方を0にすれば状態が保持されます。
フリップフロップにはSR-FF、D-FF、T-FF、JK-FFの四つの種類があります。D-FFは遅延素子と同じ動作をし、入力Dをそのまま次の時刻の状態にします。クロック入力の周期を時間単位とした時刻tに対して、Q(t+1) = D(t) です。この素直さから、順序回路が状態を覚える部分にはD-FFがいちばんよく使われます。
並べれば値をためる器、隣へつなげば値を送るシフトレジスタになる
Section titled “並べれば値をためる器、隣へつなげば値を送るシフトレジスタになる”フリップフロップ一つが取る状態は二つなので、まとまった桁数の値を保つには、桁の数だけ同じ素子を用意します。この一かたまりがレジスタで、4桁の値なら4個のD-FFが同じクロックの合図で一斉に中身を入れ替えます。
Dフリップフロップを多段に重ねると、シフトレジスタや分周回路になります。CPU内部のレジスタにも、同じ素子が用いられています。隣り合わせ方を変えるだけで、同じ素子が値をためる器にも、値を横へ送る仕掛けにもなります。
計算の材料は、メモリからいったんレジスタへ写す
Section titled “計算の材料は、メモリからいったんレジスタへ写す”演算回路が計算をするときは、メモリ上のデータをいったん汎用レジスタへ写したうえで、そのレジスタの上で計算します3。計算はレジスタの上で進み、メモリはプログラムとデータをしまう側に回ります。足し算や論理演算を行う演算回路(ALU)の計算結果も、いったんレジスタへ返ります。
CPU内部レジスタは一時的な情報を保存する場所です。計算に使う値や計算結果をしまう汎用レジスタ、演算フラグなどに使うフラグレジスタといった種類があります。プログラムカウンタは、CPUが次にどこの命令を取りに行くかを示す番地が保存されているレジスタです。CPUの中身としては4、データや命令、ステータスなどをしまうレジスタと、プログラムカウンタやスタックポインタなどの専用レジスタが挙がります。
基本情報技術者試験のシラバスは5、プロセッサの構造と方式の用語例として、命令アドレスレジスタ(命令カウンター、プログラムカウンター、逐次制御カウンター)、命令レジスタ、汎用レジスタ、インデックスレジスタ(指標レジスタ)、ベースレジスタ、スタックポインタを挙げています。CPUの内側は、用途ごとに名前の付いたレジスタで埋まっています。
組み合わせ回路をレジスタで挟み、出力が落ち着いてから取り込む
Section titled “組み合わせ回路をレジスタで挟み、出力が落ち着いてから取り込む”組み合わせ回路では、信号が伝わる時間のわずかなずれから、グリッチと呼ばれるごく短い信号が出てしまう場合があり、これが論理回路の誤動作につながります。これを避ける手立てがクロック同期回路で、その構造は組み合わせ回路がフリップフロップに挟まれた形です。
グリッチは、組み合わせ回路の出力が安定するまでの短い時間に出る信号です。出力が安定するのを待ってからクロックを動かし、その値をフリップフロップに保持させれば、誤動作を避けられます。レジスタは値を覚える部品であると同時に、時間を区切る壁でもあります。
RTL設計もスキャン検査も、レジスタを単位に組む
Section titled “RTL設計もスキャン検査も、レジスタを単位に組む”RTL(register transfer level)はレジスタ伝送レベルと訳され、論理回路をレジスタ間の動作として表現する抽象レベルです。設計者がRTLで書いているのは、どのレジスタからどのレジスタへ、どんな計算を通って値が移るかという筋書きです。
テスト容易化設計の例には、スキャンパス方式と論理BISTがあります。スキャンパス方式は、チップ内のフリップフロップ全部をシフトレジスタとして動かせるよう回路を足し、直列に連ねたものです。出荷前の検査では、チップ内に散らばったフリップフロップが一本の通り道へ組み替えられ、外の端子から値を流し込んで動作が観測されます。値を隣へ送るというシフトレジスタの性質が、そのまま検査の通り道になっています。
同じフリップフロップでも、番地で読み書きする配列はSRAMと呼ぶ
Section titled “同じフリップフロップでも、番地で読み書きする配列はSRAMと呼ぶ”SRAMは、メモリセルにフリップフロップの回路を使ったメモリで、いったん書き込んだ内容は電源が切れるまで残ります。
素材が同じでも、演算回路のすぐ隣で桁ごとに直結した一群をレジスタ、番地を指定して読み書きする大きな配列をSRAMと呼び分けます。名前を分けているのは、演算回路からの距離と呼び出し方の違いです。
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”レジスタとは何ですか?
順序回路の記憶を担うフリップフロップを桁の数だけ用意した一かたまりで、クロックの合図で中身がまとめて入れ替わります。CPU内部のレジスタにも、Dフリップフロップが用いられています。
メモリとの違いはどこにありますか?
計算までの距離と呼び出し方が違います。演算回路はメモリ上のデータを一時的に汎用レジスタへコピーし、その汎用レジスタで演算を行います。メモリは材料をしまう側、レジスタは計算が進む作業台にあたります。
どんな部品でできていますか?
フリップフロップです。順序回路が状態を覚える素子として最も広く使われているのがフリップフロップで、その土台になる回路がSRラッチです。
なぜクロックの合図が要るのですか?
組み合わせ回路の出力が落ち着くまで待つためです。信号が伝わる時間のわずかなずれからグリッチと呼ばれるごく短い信号が出る場合があり、出力が安定してからクロックを動かしてフリップフロップに保持させれば、誤動作を避けられます。
CPUにはどんなレジスタがありますか?
基本情報技術者試験のシラバスは、命令アドレスレジスタ(命令カウンター、プログラムカウンター、逐次制御カウンター)、命令レジスタ、汎用レジスタ、インデックスレジスタ(指標レジスタ)、ベースレジスタ、スタックポインタを挙げています。ほかに演算フラグなどに使うフラグレジスタもあります。
シフトレジスタとは何ですか?
値を隣へ送りながら覚える形です。Dフリップフロップを多段に重ねると、シフトレジスタや分周回路になります。
出荷前の検査とも関係がありますか?
あります。テスト容易化設計の例であるスキャンパス方式は、チップ内のフリップフロップ全部をシフトレジスタとして動かせるよう回路を足し、直列に連ねたものです。
比較・違いを学ぶ
Section titled “比較・違いを学ぶ”- カウンタとは── 覚えた値を一つ進める側の回路
5件を表示
- 1ルネサス エレクトロニクス:Engineer School 順序回路、フリップフロップrenesas.com ↩
- 2電子情報通信学会:知識の森 1群8編3章 有限状態機械と順序回路ieice-hbkb.org ↩
- 3ルネサス エレクトロニクス:Engineer School マイコンの基本構成、動作renesas.com ↩
- 4JEITA 半導体部会:半導体用語集 ICガイドブック 用語解説semicon.jeita.or.jp ↩
- 5