Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

RL78/F13 内部データ・メモリ空間

ハードウェアマニュアルの内部データ・メモリ空間の項で記載されている

 

汎用レジスタ(FFEE0H-FFEFFH)の空間は、命令フェッチやスタック領域としての使用を禁止します。

 

の意味を教えて下さい。

  • わわいです
    そのエリアは、内蔵周辺デバイスのレジスタ領域として使われるため、命令フェッチやスタック領域などとしては使えない、ということでしょうね。
  • In reply to わわい:

    回答ありがとうございます。


    なるほど。そういうことなんですね。

    命令フェッチとして、その領域が使えないというのが
    具体的によく分かっていないため、
    まずは命令フェッチについて、調べてみます。
  • In reply to RRR:

    わわいです
    レジスタ領域ってのは周辺デバイスの状態で内容が勝手に変わるもんなんで、プログラムの実行やらデータの保存やらの用途には使えないってだけのはなしです
    そんなにむずかしいもんでもありません
  • RRRさん
    シミュレータだと汎用レジスタ空間にプログラムを配置すると正常に実行できてしまいますけれども、、、
    本当のチップだとその空間にはRAMがないので禁止事項になっているようです。(そこをフェッチすると暴走します)
     
    RAMはなくても汎用レジスタが存在するのでMOV命令等でメモリとしてアクセスはできます。
    きっとRAMのメモリバスと汎用レジスタのメモリバスが別になっているのでしょう。
  • In reply to わわい:

    回答ありがとうございます。

    汎用レジスタ(FFEE0H-FFEFFH)の領域を、プログラムやデータの格納するために
    使用してはいけないという意味だと理解しました。

    認識合っていますでしょうか。
  • In reply to RRR:

    チョコです。
    >汎用レジスタ(FFEE0H-FFEFFH)の領域を、プログラムやデータの格納するために
    >使用してはいけないという意味だと理解しました。

    RL78の構造をきちんと管理できれば,通常のデータ領域としては使えます(例えば,レジスタ・バンクを使わなければ,FFEF7Hまでは使えます)。

    ちなみに,汎用レジスタ領域と内蔵周辺レジスタとは関係ありません(アドレス領域が全く違います)。
  • In reply to チョコ:

    失礼な書き込みであれば申し訳ありません。無視してください。

    >まずは命令フェッチについて、調べてみます。
    「命令フェッチ」そのものが解っていないのでは?

    インターネットで「命令フェッチ」を検索すれば解説もあるようです。私の経験では、培風館の情報処理シリーズ1プログラミングシステムの基礎(ジェフリ・D.ウルマン)と超LSIシステム入門(C.ミード,L.コンウェイ)が超お勧めなのですが、非常に古い書籍です。アマゾンで入手は可能なようです。他のメンバーから最新の良書の紹介があるかも。この後にRL78 ファミリユーザーズマニュアル ソフトウェア編(R01US0015JJ0220)を読むことで、RL78の具体的なことも理解できるように思います。
  • In reply to kijo:

    「汎用レジスタ領域」と「内蔵周辺レジスタ」の違いぐらいは理解してないと、と思います
    汎用レジスタというのがCPUが内部で計算処理するのに使用します
    内蔵周辺レジスタはアプリが機能を制御するのに使用しますから
    アクセス速度や、アドレス領域は異なっているはずです、
    「汎用レジスタ領域」でも「内蔵周辺レジスタ」でもよく考えて使用すれば
    データの退避ぐらいには使用できる可能性があると思います。
  • In reply to kijo:

    失礼なんて、とんでもございません。

    ご指摘の通り、理解ができていないのだと思います。
    まずは、インターネット等で検索して調べてみます。
  • In reply to RRR:

    チョコです。
    参考までに。(実際の回路を確認した訳ではく,いろんな情報から考察した内容です。)
    現在のMCU/MPUは,基本的にノイマンのストアード・プログラム方式です。プログラム(命令のかたまり)をメモリに予め格納し,メモリから命令を読み出し(フェッチし),フェッチした命令を解釈しながら実行していきます。
    共通のバス(初期のMPUは殆どバスは共通バスしかなかった)で,命令のフェッチとデータの読み書き(アクセス)で行うと,共通バスの奪い合いが発生してバス効率が低下(ノイマンのボトルネック)します。
    そこで,MCUでは命令のフェッチ系のバスとデータのアクセス系のバスを分けたハーバード・アーキテクチャが採用されてきています。最近のMCUでは,単に命令フェッチ用とデータ・アクセス用でバスを分けるだけでなく,それ以外に複数のバスが存在しています。(プロセスが微細化することで,複数のバスを内蔵できるようになっています。)
    RL78では,メモリも周辺機能も汎用レジスタも同じ(論理)メモリ空間に配置されています。しかし,物理的に接続されるバスは同じではありません。
    RL78では,実行速度を上げるため,コード・フラッシュからは1クロックで32bit単位で命令を先読みするような構造になっているようです。さすがに,RAMはそのような構成になっていないので,RAMでの命令実行は遅くなります。一方,今回の汎用レジスタは,そもそもフェッチ系のバスに接続されていないので,汎用レジスタで命令を実行できないだけです(通常のRAM領域は,そこで命令を実行させるために,わざわざ命令フェッチ用のバスにも接続できるようになっている)。ここらは,個々のMCUで異なってくるところかと思います。

    そもそも,C言語で普通にプログラミングしている範囲では気にする必要はないかと思います。
  • In reply to チョコ:

    >そもそも,C言語で普通にプログラミングしている範囲では気にする必要はないかと思います。
    と言ってしまうと実も蓋もないように思えます。たしかに、応用もマイコンも極めて高度になっているので自分の守備範囲に注力するのが得策です。極端に言ってしまえば応用担当はSimlinkとオートコードとRTOSに頼ってしまえばC言語も不要です。しかし、せっかく興味を持ったのでマイコンのアセンブラレベルから電気信号レベルまでをつなげるのも面白いと思います。教科書なしですべてをインターネットでは限界があります。私の知る限りマイコンのアセンブラレベルから電気信号レベルをつなげているのは「超LSIシステム入門」だけです。教科書もなしで今の高性能なマイコンをベースに独学するのは困難です。一旦、古い時代に戻るのが良いと思います。それから次のステップでその他の教科書やソフトウエアマニュアルなどを使ってハーバード・アーキテクチャとかパイプラインとか命令キュウとかコンパイラとかに広げるのが近道に感じます。
    「超LSIシステム入門」も古いので入手性も悪く、かつ、N-CHダイナミック回路なのでけっこう大変です。是非、他に良い教科書があればご紹介ください。

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page