計算機構成の原理 (2) 演算方法と演算器

数体系とコーディング

文字と文字列の表現

アスキーコード

ASCII コード文字システムには 128 の要素があるため、バイナリ エンコーディングには 7 ビットと偶数パリティ コードの合計 8 ビット、つまり 1 バイトが必要です。8 ビットの最上位ビットは 0 で、残りの 7 ビットで 128 個のコードを与えることができると規定されています。
128 個のコードのうち、表示可能な文字は 95 個で、数字の範囲は 32 ~ 126 です。制御文字は 33 個あり、数字の範囲は 0 ~ 31 と 127 です。

漢字エンコーディング

入力コード: デジタルコード、ピンインコード、フォントコードなど
漢字内部コード: 漢字情報を格納、交換、検索するための内部コードで、2 バイトで構成され、各バイトの上位ビットは 1 出力コード
: フォントコード

固定小数点数と浮動小数点数の表現

固定小数点数、つまりすべてのデータの小数点の位置が固定されており、固定小数点小数と固定小数点整数に分けることができます。
データの操作を実行するときに符号ビットと値ビットの処理を容易にするために、コンピュータは符号ビットと値ビットを一緒にコード化してデータを表現します. これらのコードはマシンコードと呼ばれます.

固定小数点表現

マシンコード表現部分は比較的簡単なので詳しくは割愛しますhttps://blog.csdn.net/btufdycxyffd/article/details/127775989?spm=1001.2014.3001.5502
原文コード表記
逆コード表記
補足記法
元のコードの変更 補足する方法:

  1. 元のコードの符号ビットは変更されずに 1 であり、整数の各 2 進数は反転コードを取得するために否定されます。
  2. 逆コードの符号ビットは 1 のまま変更せず、逆コード値の最下位ビットに 1 を加えて補数コードを取得します。

フレームシフト表記法 フレームシフトは
通常、浮動小数点数の指数を表すために使用されます。
コードシフトと補数コードの仮数部は同じですが、符号ビットが反対です

浮動小数点表現方法

浮動小数点数とは、データの小数点の位置が特定の範囲内で浮動できることを意味します。
現在のコンピューターは、IEEE754 標準の形式を使用して浮動小数点数を表します。32 ビットの短い浮動小数点数と 64 ビットの長さの浮動小数点数を指定するための標準形式は次のとおりです。

画像.png

S は符号ビット、E は順序コード、M は仮数、仮数は元のコードを使用し、指数はコード シフトを使用します (順序の比較と比較を容易にするため)。
仮数の値が 0 でない場合、仮数フィールドの最上位ビットは 1 です。形式は次のとおりです。1.M。最上位桁の 1 は、データ表現の精度を向上させるために、小数点の左側に隠されていると見なされます。
オーダーコードはフレームシフト方式(固定オフセット値付加)を採用しており、インデックスeの真値をオーダーコードEに変更する際、127の固定オフセット値を付加、つまりE=e+127となります。
マシンゼロ: 指数の値に関係なく浮動小数点の仮数が 0 の場合、または仮数の値に関係なく、指数の値が指数の最小値よりも小さい場合は、マシン ゼロと見なされます。マシンゼロ。
基数 R=2、基数は固定で、暗黙的に表現されます。

正規化:
元のコード: 仮数の最上位桁は有効な値でなければなりません。
2 の補数: 仮数の最上位ビットは、仮数の符号ビットの反対でなければなりません。

なぜ正規化するのですか?
回答: 浮動小数点数の表現に明確な規則がない場合、同じ浮動小数点数の表現は一意ではありません。
正規化された 32 ビット浮動小数点数 x の真の値は次のとおりです。

画像.png

正規化された 64 ビット浮動小数点数 x の真の値は次のとおりです。
画像.png

浮動小数点数の表現範囲
画像.png

例: 浮動小数点数 x のバイナリ ストレージ形式が (43AC0000)16 の場合、その 32 ビット浮動小数点数の 10 進数値を見つけます。
解: 16 進数を展開すると、2 進数の形式が得られます。 指数
画像.png
e=注文コード-127=10000111-01111111=00001000=(8)10
仮数 1.M=1.010 1100 0000 0000 0000= 1.01011

したがって、真理値:
画像.png

固定小数点数と浮動小数点数の演算

固定小数点数の演算

2 の補数加算

[x+y] 補数=[x] 補数+[y] 補数 (mod 2n+1)

2 の補数減算

Mantra: 否定し、最後の桁に 1 を追加
[xy] 補数 = [x] 補数 - [y] 補数 = [x] 補数 + [-y] 補数
[-y] 補数 = -[y] 補数 (mod 2n+ 1 )
[-y] 補数 = [y] 補数と否定 + 2-n
オーバーフローの概念と検出方法

オーバーフローの概念:語長の絶対値が演算に現れる現象
画像.png

オーバーフロー検出方式:ダブルサインビット方式(歪補数符号)、シングルサインビット方式 ダブルサインビット方式
[
x] 補数 = 2n+2 + x ( mod 2n+2 )
画像.png
Sf1 は正しい符号を表し、論理式は V = Sf1 ⊕ Sf2
例: x=+01100 , y=+01000 , x+y を見つけます。

画像.png
固定小数点乗算

配列乗算器: パイプライン化された配列乗算器は、シリアル方式
[x] original=xf.xn-1…x1x0 [y] original=yf.yn-1…y1y0[xy] original=(xf ⊕ yf)+ ( xn-1…x1x0).(yn-1…y1y0)
2 つの元のコードで表される数値を乗算するための演算規則は次のとおりです。積の符号ビットは、2 つの数値の符号ビットの排他的論理和演算によって得られます。値ビットは 2 で得られます。整数を乗算した結果が得られます。

符号ビットのない配列乗算器 符号
ビットのある
配列乗算器相補回路:
画像.png
E=0 の場合、入力と出力は等しく、E=1 の場合、数値の右端から左に最初の 1 までスキャンし、このビットと右側のビットは変更されず、左側の値はビットごとに反転されます.
直接元のコードの乗算: 元のコードを入力して乗算を実行する場合、計算前の補数と計算後の補数を求める必要はありません. 製品はすぐにご利用いただけます。
例: x=+15、y=-13 を設定し、元のコード配列の乗数と補数を使用して積 x y=? 補数
画像.png
計算後、積の補数を得るために補数が得られます。

例: x=-15、y=-13 を設定し、補数配列乗算器と補数器を使用して積 x·y=? を求め、10 進数を乗算して検証します。

ここに画像の説明を挿入

定点除算

n ビット固定小数点 10 進数 (固定小数点整数も適用可能) 被除数 x, [x] 元 = xf
. , [q] 元 = (xf⊕yf) + (0.xn-1...x1x0 /0.yn-1...y1y0)
商記号演算 qf=xf⊕yf は、元のコードの乗算と同じで、和は modulo 2 で得られます。

元のコードの復元方法

手動除算では、被除数 (余り) と除数の大きさを比較して、商 1 (十分な減算) または商 0 (不十分な減算) を決定できます. 機械除算では、正の剰余は十分な減算を意味し、負の剰余は十分な減算を意味します.残りは減算が不十分であることを意味します。減算が不十分な場合は、元の余りを元に戻して下降操作を続行する必要があります。
この方式は回収残差方式と呼ばれ、制御がより複雑になります。

元のコードは剰余法(足し算と引き算の代替法)を復元しない

剰余が正の場合、商は 1 となり、次の除数を右にシフトして減算し、
剰余が負の場合、商は 0 となり、次の除数を右にシフトして加算します。
計算ステップ数は固定で、制御はシンプルで規則的です。
例:x=0.101001、y=0.111、x÷yを求めます。

画像.png
余りを元に戻さない配列除算器

浮動小数点数の演算

浮動小数点数の加算と減算
2 つの浮動小数点数 x と y があり、それぞれ
x=2E^x・Mx y=2E^y・My  
ここで、Ex と Ey はそれぞれ数値 x と y の順序コードです。 、Mx および My は、数値 x および y の仮数です。
2 つの浮動小数点数の加算と減算の演算規則は次のとおりです。 x±y=(Mx2 (Ex-Ey)±My)2 Ey

操作手順

  1. 0オペランドチェック; 0に遭遇した場合、バイパス処理を行うことができます
  2. 注文コードを比較し、注文の調整を完了します (小規模注文から大規模注文への調整)。

ルールは、注文コードの小さい方が大きい方の番号に、小さい方が大きい方に並び、
△E=[Ex]補数-[Ey]補数

  • 段差△E=0の場合、2つのオーダーコードが等しい、つまりEx=Eyであることを意味します。
  • 段差△E>0の場合、Ex>Eyを意味します。
  • 段差△E<0の場合、Ex<Eyを意味します。
  • Ex≠Eyの場合、仮数部を動かしてExかEyかを等しくするように変更する。
  1. 仮数の加算および減算演算。
  2. 結果の正規化;

この部分がよくわかりません。詳しくはhttps://blog.csdn.net/weixin_43715360/article/details/120256108を参照してください

仮数加算結果の符号ビットが 2 重符号ビットで表される場合、結果は 10.&&&&& または 01.&&&&& になります。つまり、2 重符号ビットが等しくありません。オペレーション。浮動小数点演算では、演算結果の絶対値が 1 より大きいことを示し、正規化が破綻するため、このとき、正規化プロセスを右にシフトする必要があります。数値の最上位ビットが無効の場合(原符号と補数コードが異なることに注意)、仮数部を左シフトすることで数値の最上位ビットを有効にする。

  • 正則処理:仮数演算がオーバーフローした場合、1 ビット右シフトし、指数コードに 1 を加算します。
  • 左則処理:仮数部演算がオーバーフローせず、仮数部が1.Mでない場合(この部分はよくわかりません、例もあります、正しいかどうかわかりません、最初に書き留めてください)、次に仮数は左に 1 シフトされ、注文コードは 1 減らされます。
  1. 丸め処理;
  • 最も近い丸め (0 丸め 1): 「丸め」と同様に、破棄される最上位ビットは 1 です。
  • 1 から 0 への丸め: 切り捨て
  • +∞ 方向への丸め: 正の数の余分な桁がすべて「0」でない場合は 1 を繰り上げ、負の数の場合は切り捨てます。
  • -∞方向への丸め: 負の数の余分な桁はすべて「0」ではなく、キャリー 1、正の数、切り捨て
  1. オーバーフロー処理。

指数コードのオーバーフローは、一般的に +∞ および -∞ と見なされます。指数コードがアンダーフローした場合、値は 0 です。

例: x=2^010×0.11011011、y=-2^100×0.10101100 とし、x+y を求めます。
解決策:注文コード、仮数とも補数コードで表現
[x]浮動補数 = 00010, 0.11011011; [y]浮動補数 = 00100, 1.01010100
① 0オペランドチェック(0でない):演算速度を上げる

② 整列:オーダーコードを整列させた後にのみ加算と減算を行うことができます

この問題の段差△E=[Ex]補数-[Ey]補数=00010-00100=11110=-2D、
つまり段差は-2、Mxは右に2桁ずらしてEx 2が加算されます。
[x] フローティング補正=00100, 0.00110110(11)

③ 仮数加算または減算
画像.png
④ 結果の正規化 仮
数が 1.M でない場合、左正規化処理は 1.000101 01(10)となり、オーダ コード 00100 から 1 を引いた値は 00011 になり
ます
。 ) 1.000101 を取得するメソッド10 .
⑥ オーバーフローの判定と処理
指数コードの符号ビットは 00、オーバーフローなし。最終結果は x+y = 2^011×(-0.11101010)
浮動小数点数の乗算と
画像.png
除算 演算手順は上記と同じです

電卓の構成

演算ユニットは、ALU(Arithmetic Logic Unit)(コア)、アキュムレータ、ステータスレジスタ、汎用レジスタ群などから構成される。

電卓の主な機能は、データの算術演算と論理演算を完了することです, これは、内部の算術論理演算ユニット (ALU) によって行われます. 演算結果を提供するだけでなく、結果の一部も提供します 機能,オーバーフローかどうか、キャリー出力があるかどうか、結果がゼロか負かなど。これらの結果特性情報は、通常、いくつかの特定のフリップフロップに格納されます。
命令の実行中、ALU には、実行する操作に関する制御信号が提供されなければなりません。

レジスタの機能: 操作に関与するデータと中間結果を一時的に格納します. これらのレジスタはアセンブリ プログラマによって直接アクセスできます. これらは一般に汎用レジスタと呼ばれ、設定されている特殊なレジスタと区別されます.アセンブリ プログラマはアクセスできません。

算術論理ユニット (ALU)

ALUには2つのユニットがあり、1つは算術ユニット、もう1つは論理ユニットです。
算術演算ユニット: 加算や減算など、コンピューター内の数値演算を担当します。
論理ユニット: AND、OR、NOT、XOR など、コンピューター内の論理演算を担当します。
さらに、ALUには、シフト、補完などの補助機能もあります。

演算ユニット

1 ビット全加算器:最も基本的な加算単位、入力 2 ビット加数と下位桁上げ、出力和と上位桁上げ 直列
加算器:1 ビット全加算器、直列桁上げの単純な接続
並列加算器:先読み桁上げを使用加算器の演算速度を向上
74181ALU 論理回路図
画像.png
算術演算と論理演算の実現 (74181ALU)
① M=L=0 のとき、キャリー信号に影響を与えず、算術演算を行う
② M=H=1 のとき、キャリーゲートがブロックされ、ロジックが実行されます

ロジックユニット

論理ユニットは、AND、OR、NOT 演算などの論理演算を実行し、数値が負かどうかなどの単純な数値テストも実行できます。

内部バス

機械内部の各部のデータ伝送は頻繁に行われますが、内部のデータ伝送ラインを削減し、制御を容易にするために、レジスタ間のデータ伝送経路を結合してバス構造を形成することができます。
バスの分類:
場所

  • 内部バス(CPU内)
  • 外部バス(システムバス)

論理構造

  • 単方向転送バス
  • 双方向転送バス

電卓の基本構造

シングルバス構造の電卓
画像.png
デュアルバス構造の電卓
画像.png
3バス構造の電卓
画像.png

おすすめ

転載: blog.csdn.net/btufdycxyffd/article/details/128208570