![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ファイルレジスタf1が定義されていて
ADDWF f1,f ;f1=W+f1(=は代入演算子)を実行するとき,
(1) W+f1を行なうには,f1のメモリにアクセスする必要があります。
(2)f1=W+f1を行なうには,再度f1のメモリにアクセスする必要があると思いますが,
この命令は1命令サイクルで実行されます。
ところで,
MOVWF f ; W->f
も1命令サイクルで実行されます。
しかし,この命令はメモリに一度アクセスするだけです。
ADDWF f1,f
は1命令サイクルで本当に2度メモリアクセスしているのでしょうか?
それとも,また違った方法で実行されているのでしょうか?
(出典付き,でお教えていただけるとありがたいですが)
No.3ベストアンサー
- 回答日時:
PIC16F193Xのデーターシートで説明します
http://www.microchip.jp/docs/41364B_JP.pdf
「26.1 Read-Modify-Write 操作」で説明されていますが、ADDWF Freg ,d (F or W)格納先指定により演算結果をF=ファイルレジスタかW=Wレジスタに格納するかの違いです
「図 1-1: PIC16F193X/LF193X のブロック図」により演算はALUで行われWregとFreg(RAM)は同じバス上にあり同じ扱いです、(ALUからFregへデータを直接転送可能)
PICはシステムクロックの1/4が命令実行サイクスになります。
(20MHz動作時は命令サイクル5MHz,1命令実行時間200nS)
ありがとうございます。
read-modify-writeを読んだ記憶だけありましたが理解せずにおりました。
今回,意味がわかりました。
回答No.2 さんで気付いたのですが,回答No.3さんで,よりはっきりしました。
No.2
- 回答日時:
http://www.piclist.com/images/www/hobby_elec/pic …
f1(f)はファイルレジスタ:0-127とされていますが、他のCPUのメインメモリ相当では無く、レジスタ相当となっています。
レジスタ数が8,16,32等のCPUがありますが、それが128個まで増やされており、CPU内蔵で1クロックアクセス(リード、ライト同時アクセス)が可能な構成になっていると考える事が出来ます。
レジスタ、或はフリップフロップは読み出しパスと書き込みパスが別々に設けられており、命令クロックの立ち上がりサイクルでそれまでのデータを読み出しが行われ、1クロックの間その値を読み出し続けます。
一方同一サイクル内の先頭のクロック立ち上がり時点で、(前サイクルのCPU演算結果の)書き込みパスのデータ取り込みもパラに可能です。
但し、書き込まれたデータが安定して読みだされるまでには時間が掛かるので、書き込まれたデータを次のサイクルで使用しようとした場合には、CPU内部でチェックしてダミーサイクルの挿入が行われます。
(最近のインテルCPU等では、このような場合もダミーサイクル無しで実行出来るようにCPU内蔵のテンポラリレジスタが追加される等の強化が行われているようです)
前サイクルでの書き込みfレジスタ番号と、次のサイクルの読み出しfレジスタ番号が別番号の場合には、1命令1サイクルで命令の実行が続けられます。
http://www.microchip.jp/docs/DS39703A_JP.pdf
第2章CPU 2.11.1
書き込み後読み取り従属関係ルール
一方通常のメインメモリでは読み出しパスと書き込みパスとして同一のパスが使われており、メインメモリに同一サイクルで読み出しと書き込みをパラに実行する事は不可能で、ロード関係命令とストア命令とは別サイクルで実行されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード CPUがメモリ上に書かれている命令を実行した後の流れについての質問です。 1 2023/05/05 01:18
- CPU・メモリ・マザーボード CPUがメモリ上の命令を実行した後の流れについての質問です。 1 2023/05/05 01:36
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- CPU・メモリ・マザーボード CPUがメモリ上の命令を実行する流れについての質問です。 3 2023/05/05 01:41
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- F1・モータースポーツ 【F1】2026年に日本のホンダが2年半ぶりにマクラーレンにPUを提供してタッグを組ん 1 2023/06/05 21:23
- システム CPUの問題について 2 2022/07/09 12:04
- 政治 岸田首相は鈴鹿サーキットで行われたF1日本グランプリを訪問。優先順位に疑問を呈する声 4 2022/10/11 17:50
- 生物学 エンドウを材料として、 種子の形と葉の色の形質について、遺伝の実験を行った。これらの形質に関する遺伝 1 2023/06/14 21:55
- その他(自然科学) 論文のまとめに関して(小論文)添削お願いします。 6 2023/07/16 14:24
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レジストってなんですか?
-
biosとは人の体でいえば脳のよ...
-
SRAMとレジスタの違いは何でし...
-
FILOとLIFO
-
CPUのビット数と、メモリ(主記...
-
Z80、6502、i8086、MC68000につ...
-
レジスタとメモリについて
-
パソコン内部の仕組みについて
-
エクセルVBAのIf,Then 構...
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
-
[VBS] 素早くローテート演算したい
-
PC-9801でマシン語を学習するに...
-
素数を求めるプログラム(アセン...
-
03分22秒36のような時間の単位...
-
実行ファイルからソースはみれる?
-
1の補数
-
一般のソフトで画像を扱う場合...
-
汎用レジスタのワーキングビッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レジストってなんですか?
-
CPUのビット数と、メモリ(主記...
-
レジスタの数
-
SRAMとレジスタの違いは何でし...
-
シーケンサのデータレジスタD...
-
レジスタとメモリについて
-
biosとは人の体でいえば脳のよ...
-
専用レジスタ 汎用レジスタ
-
PICでUSARTのフレーミングエラ...
-
キャッシュメモリとレジスタの...
-
なぜソフトウェアでハードウェ...
-
CPUのハード的な仕組みがわかり...
-
PC-G830
-
命令
-
CASL LDの考え方
-
MP-Z80(10進数の加算)
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
情報科学の飽和演算、ラップア...
おすすめ情報