回答編集履歴

2

レジスタの存在理由を追記

2018/10/23 02:07

投稿

rubato6809
rubato6809

スコア1380

test CHANGED
@@ -27,3 +27,47 @@
27
27
 
28
28
 
29
29
  maisumakunさんがお書きになった通り、特定のレジスタにある値を書き込めば、その周辺装置は特定の動作をする、ように作られています。また、周辺装置の状態を読み取るための「周辺レジスタ」もあります。
30
+
31
+
32
+
33
+ 以下、追記します。
34
+
35
+ > なぜ電子回路の制御に、レジスタを使用するのでしょうか。
36
+
37
+
38
+
39
+ 「入出力ピン、割込み、タイマーなど」の回路をざっくりと周辺回路・周辺機器と呼びます。
40
+
41
+
42
+
43
+ 計算機の中心は何と言ってもCPUとメモリです。でもそれだけでは計算機は使い物になりません。なんらかの入出力機器等がつながって実用的になります。CPUとメモリの「周辺」に外部機器の制御のための回路がある、とイメージすれば良いでしょう。パソコンもキーボード、マウス、モニタ画面、補助記憶装置(ディスク等)、通信機能(ネットワーク等)などが無かったら使いにくいのは明らか。これらは全て周辺機器としてCPUにつながっています。
44
+
45
+
46
+
47
+ 「入出力ピン、割込み、タイマーなど」に戻りますと、これらの回路は幅広い使い方ができるように作られています。幅広い使い方の中から、実際に使う時点で、用途に合った特定の使い方を選び取って利用します。
48
+
49
+
50
+
51
+ 例えば、入出力ピンは入力にも出力にも使えるように作ってあります。しかし実際に使うには、入力に使うか、出力に使うか、使う人(ソフトウェア)が選択して、どれかひとつの機能を利用します(同時に入力も出力もするということはありえない)。そこで、ソフトウェアで入力にするか出力にするか、信号が流れる方向を選択するために「レジスタ」を設けたのです。
52
+
53
+
54
+
55
+ 入力か出力か、方向を指定する、例えば出力に指定したとします。入出力ピンにつながっている電子回路は、
56
+
57
+ 「レジスタ」の値に従って回路の働き方が変化するように作られていますので、その後は出力ピンとして動作を続ける、という次第です。
58
+
59
+
60
+
61
+ ある程度、電子回路を理解できるなら、入力か出力かを切り替える回路がどうなっているか、少なくとも原理的なところは理解できるはずです。適切な教材があるとか身近にこうしたことを質問できる人がいれば良いですね。各種マイコンのハードウェアマニュアルには周辺回路の大まかな構造が示されてもいます。
62
+
63
+ もし電子回路など見たくも知りたくもないということなら、そういうものだと頭から覚えこむしかないでしょうし、そんな人が何を詮索するのか?という疑問も感じますが(笑)。
64
+
65
+
66
+
67
+ 割込みを使う場合も説明しましょう。
68
+
69
+ 割込みはとても有益な仕組みではありますが、電源が入った(リセットした)時点からいきなり割込みがかかるのは非常に具合が悪く、使いにくいものです。そこで、ソフトウェアの方が準備できたところで、その時点から割込みがかかるように、ある「レジスタ」に値を書込みます。これもソフトウェアで周辺回路を制御できるようになっていればこそ、そのための「レジスタ」があってこそ、です。
70
+
71
+
72
+
73
+ 結論的には、ソフトウェアが機能を制御できる(=プログラムできる)ように周辺回路は作られており、その設定をするため・周辺機器の状態を読むため、様々な「レジスタ」が用意されています。

1

読み取る周辺レジスタを追加

2018/10/23 02:06

投稿

rubato6809
rubato6809

スコア1380

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- CPUの中の小容量で高速な記憶回路をレジスタと呼び、この使い方が一番多いかもしれませんが、「レジスタ」という呼ばれるモノは、それだけではありません。
15
+ CPUの中の小容量で高速な記憶回路をレジスタと呼び、この使い方が一番多いかもしれませんが、「レジスタ」と呼ばれるモノは、それだけではありません。
16
16
 
17
17
 
18
18
 
@@ -26,4 +26,4 @@
26
26
 
27
27
 
28
28
 
29
- maisumakunさんがお書きになった通り、特定のレジスタにある値を書き込めば、その周辺装置は特定の動作をする、ように作られています。
29
+ maisumakunさんがお書きになった通り、特定のレジスタにある値を書き込めば、その周辺装置は特定の動作をする、ように作られています。また、周辺装置の状態を読み取るための「周辺レジスタ」もあります。