JP6250447B2 - 半導体装置及び命令読み出し制御方法 - Google Patents

半導体装置及び命令読み出し制御方法 Download PDF

Info

Publication number
JP6250447B2
JP6250447B2 JP2014057790A JP2014057790A JP6250447B2 JP 6250447 B2 JP6250447 B2 JP 6250447B2 JP 2014057790 A JP2014057790 A JP 2014057790A JP 2014057790 A JP2014057790 A JP 2014057790A JP 6250447 B2 JP6250447 B2 JP 6250447B2
Authority
JP
Japan
Prior art keywords
instruction
flash memory
destination address
program counter
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014057790A
Other languages
English (en)
Other versions
JP2015184706A (ja
Inventor
隆夫 草野
隆夫 草野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MegaChips Corp
Original Assignee
MegaChips Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MegaChips Corp filed Critical MegaChips Corp
Priority to JP2014057790A priority Critical patent/JP6250447B2/ja
Priority to US14/656,984 priority patent/US9477594B2/en
Priority to CN201510121696.8A priority patent/CN104932876B/zh
Publication of JP2015184706A publication Critical patent/JP2015184706A/ja
Application granted granted Critical
Publication of JP6250447B2 publication Critical patent/JP6250447B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)
  • Microcomputers (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

本発明は、半導体装置及び命令読み出し制御方法に関し、特に、書き換え可能な不揮発性メモリを用いたシステム・イン・パッケージ型半導体装置及び該半導体装置おける命令読み出し制御方法に関する。
近年、電子回路システムには、多数の書き換え可能な不揮発性メモリ(フラッシュメモリ)が搭載されている。フラッシュメモリは、主に、NAND型とNOR型とがある。一般に、NAND型フラッシュメモリは、大容量で、したがって、ビット単価が安いため、大容量のデータを扱うのに適しているが、コントローラやシャドウイング用RAMが必要となり、回路構成が複雑になり易い。一方、NOR型フラッシュメモリは、小容量で比較的低速であるが、回路構成がシンプルであるため、プログラムコード(命令コード)やファームウェアを格納するのに適しており、そのため、XiP(eXecute-in-Place)と呼ばれる規格も提供されている。
また、NOR型フラッシュメモリには、パラレル型とシリアル型とがあり、NOR型シリアルフラッシュメモリは、ピン数が少なく、チップ面積を削減でき、したがって、基板実装のコストを節約することができるため、今後も、CPUとともに混載されるシステム・イン・パッケージ(SIP)を中心に利用されることが期待されている。
加えて、電子回路システムの動作速度を向上させることは恒常的な要求であり、動作速度を向上させるためのさまざまな技術が提案されている。
下記特許文献1は、情報処理装置におけるOS等のプログラムを起動する処理に要する時間を削減するため技術を開示する。具体的には、特許文献1は、2個のプロセッサを有する情報処理装置であって、第1のプロセッサが、第2のプロセッサがDRAMからOSに関する命令群を読み出して実行可能となるための準備処理(例えばDRAMに保持されたカーネルイメージの整合性チェック)を実行する一方、第2のプロセッサが、第1のプロセッサによる準備処理の実行と時間的に並行して、フラッシュメモリからOSに関する命令群を読み出して実行し、さらに、第2のプロセッサが、準備処理の完了に応じてOSに関する命令群の取得先をフラッシュメモリからDRAMに切り替えてOSを継続的に実行するようにした情報処理装置を開示する。
特開2010−146142号公報
特許文献1に開示された従来の情報処理装置では、OSに関する命令群を記憶するためにDRAMを用いることから、該DRAMに設けられた多数のピンに応じた配線を考慮して設計されなければならず、チップの小面積化を図ることが難しかった。つまり、特許文献1のような情報処理装置は、OSの高機能化に伴ってカーネルイメージのサイズの増大に合わせて大容量かつ高速なメモリであるDRAMを使用可能なシステムポリシーの下で設計されているため、DRAMを用いることができないシステム環境や、チップ実装面積の削減の要求が強いシステム環境に対しては、不向きであった。
一方で、NOR型フラッシュメモリは、その特性から、高い信頼性が求められるシステム環境において命令コードを格納する目的で用いられる場合が多いが、さらなる読み出し速度を向上させる技術が求められている。この点、NOR型シリアルフラッシュメモリは、I/Oピンの数が少なく、チップ面積の削減に大いに寄与するものとして期待されるが、読み出し速度が他のフラッシュメモリに比較して遅いため、システム・イン・パッケージ型の半導体装置に搭載した場合、読み出し速度の観点でボトルネックとなっていた。特に、CPUがNOR型シリアルフラッシュメモリから分岐に関わる命令を読み出して、実行しようとする場合、その構造上、NOR型シリアルフラッシュメモリの読み出し準備が整うまで、CPUにウェイトがかかるため、CPUの性能が低下してしまうという問題があった。すなわち、NOR型シリアルフラッシュメモリでは、読み出しアドレスに連続性がある場合には、比較的高速にデータが読み出されるが、読み出しアドレスに連続性がない(例えば分岐命令やジャンプ命令等によるアドレスジャンプ)場合には、アドレスが指定されてからデータが読み出されるまでの処理にオーバーヘッドが生じ、その間、CPUの実行が待たされてしまうという不都合があった。
そこで、本発明は、命令コードを格納したフラッシュメモリを含むシステム・イン・パッケージ型半導体装置における命令の読み出し速度を改善するアーキテクチャを提供することを目的とする。
より具体的には、本発明は、命令コードを格納したNOR型シリアルフラッシュメモリを含むシステム・イン・パッケージ型半導体装置においてCPUが分岐に関わる命令を読み出して実行する場合であっても、CPUを必要以上にホールドさせることのなく、CPUの効率的な実行を実現するアーキテクチャを提供することを目的とする。
上記課題を解決するための本発明は、以下に示す発明特定事項乃至は技術的特徴を含んで構成される。
すなわち、ある観点に従う本発明は、CPUと、前記CPUによって実行される第1の命令群を記憶する第1のフラッシュメモリと、前記第1の命令群に含まれる所定の制御命令に従って実行される第2の命令群を記憶する第2のフラッシュメモリとを備える半導体装置である。前記半導体装置は、前記CPUによる命令の実行前に、前記第1のフラッシュメモリから読み出される命令が分岐命令であるか否かを判断し、該分岐命令であると判断する場合に、該分岐命令が示す分岐先アドレス値で前記第2のフラッシュメモリが読み出し動作するように指示する。また、前記半導体装置は、該指示に従って前記第2のフラッシュメモリが読み出し動作可能な状態にある間に前記CPUのプログラムカウンタと前記分岐先アドレス値とが一致した場合に、前記第2のフラッシュメモリから前記第2の命令群の読み出しを開始する。
これにより、読み出しアドレスに連続性がない場合であっても、データが読み出されているフラッシュメモリとは別のフラッシュメモリを事前に読み出し可能状態にしておくことで、CPUの待ち時間を減らし、効率的なCPUの利用を可能にする。
また、別の観点に従う本発明は、第1の命令群を記憶する第1のフラッシュメモリと、前記第1の命令群に含まれる所定の制御命令に従って実行される第2の命令群を記憶する第2のフラッシュメモリと、前記第1のフラッシュメモリ及び前記第2のフラッシュメモリに対するアクセスを制御するアクセス制御部と、前記第1のフラッシュメモリ及び前記第2のフラッシュメモリのいずれか一方を選択し、該選択されたフラッシュメモリから順次に読み出される命令をCPUに供給するメモリインターフェースであって、該命令が第1の制御命令であるか否かを判断し、該命令が第1の制御命令であると判断する場合に、該第1の制御命令が示す第1のジャンプ先アドレス値を取得する命令検出部を含む、メモリインターフェースと、CPUのプログラムカウンタの値と前記命令検出部により取得された第1のジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記第1のジャンプ先アドレスとが一致する場合に、第1のトリガ信号を出力するプログラムカウンタ監視部とを備える半導体装置である。前記アクセス制御部は、前記命令検出部により取得された第1のジャンプ先アドレス値に従って前記第2のフラッシュメモリが読み出し可能状態になるように制御し、また、前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第1のトリガ信号に基づいて前記第2のフラッシュメモリを選択する。
前記プログラムカウンタ監視部は、前記プログラムカウンタの値が所定のインクリメント値以外の値に書き換えられた場合に、前記プログラムカウンタの値と前記第1のジャンプ先アドレスとの比較を行い得る。
また、前記プログラムカウンタ監視部は、前記取得された第1のジャンプ先アドレス値を格納するレジスタを備え得る。
さらに、前記プログラムカウンタ監視部は、前記プログラムカウンタの値が所定のインクリメント値以外の値に書き換えられ、かつ、前記レジスタの内容がNullである場合に、前記CPUがHOLD状態になるように制御し得る。
さらにまた、前記プログラムカウンタ監視部は、前記CPUによりデコードされた命令に従って前記第2のフラッシュメモリが読み出し可能状態になった場合に、前記CPUのHOLD状態を解除するように制御し得る。
また、前記アクセス制御部は、前記第2のフラッシュメモリが読み出し可能状態になった場合に、前記第1のトリガ信号を受けるまで、前記第2のフラッシュメモリがアイドル状態になるように制御し得る。
また、前記命令検出部は、前記第2のフラッシュメモリから命令群が読み出されている場合に、該命令が第2の命令であるか否かを判断し、該命令が第2の命令であると判断する場合に、該第2の命令が示す第2のジャンプ先アドレス値を取得し得る。また、前記アクセス制御部は、前記命令検出部により取得された第2のジャンプ先アドレス値に従って前記第1のフラッシュメモリが読み出し可能状態になるように制御し得る。また、前記プログラムカウンタ監視部は、前記プログラムカウンタの値と前記命令検出部により取得された第2のジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記第2のジャンプ先アドレスとが一致する場合に、第2のトリガ信号を出力し得る。そして、前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第2のトリガ信号に基づいて前記第1のフラッシュメモリを選択し得る。
また、前記半導体装置は、外部の周辺回路及び周辺機器の少なくともいずれかから割り込み要求信号を受けて、前記CPUに割り込みをかける割り込みコントローラをさらに備え得る。前記割り込みコントローラは、前記割り込み要求信号に基づいて、該割り込みに従う割り込みジャンプ先アドレス値を取得し得る。また、前記アクセス制御部は、前記割り込みコントローラにより取得された割り込みジャンプ先アドレス値に従って前記第2のフラッシュメモリが読み出し可能状態になるように制御し得る。また、前記プログラムカウンタ監視部は、前記プログラムカウンタの値と前記割り込みコントローラにより取得された割り込みジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記割り込みジャンプ先アドレスとが一致する場合に、前記第1のトリガ信号を出力し得る。そして、前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第1のトリガ信号に基づいて前記第2のフラッシュメモリを選択し得る。
なお、前記第1のフラッシュメモリ及び前記第2のフラッシュメモリのそれぞれは、NOR型シリアルフラッシュメモリであり得る。
また、さらに別の観点に従う本発明は、CPUと、前記CPUによって実行される第1の命令群を記憶する第1のフラッシュメモリと、前記第1の命令群に含まれる所定の制御命令に従って実行される第2の命令群を記憶する第2のフラッシュメモリとを備える半導体装置における命令読み出し制御方法である。前記制御方法は、前記第1のフラッシュメモリを選択的に制御して、前記第1の命令群を順次に読み出して、前記CPUに供給することと、前記第1の命令群を読み出している間に、前記第1の命令群の中から所定の制御命令を検出することと、前記所定の制御命令が検出される場合に、該所定の制御命令が示すジャンプ先アドレス値を取得することと、前記取得されたジャンプ先アドレス値に従って、前記第2のフラッシュメモリが読み出し可能状態になるように制御することと、前記ジャンプ先アドレスを取得した場合に、前記CPUのプログラムカウンタを監視し、前記プログラムカウンタの値と前記ジャンプ先アドレスとが一致するか否かを判断することと、前記プログラムカウンタの値と前記ジャンプ先アドレスとが一致すると判断する場合に、所定のトリガ信号を出力することと、前記出力された所定のトリガ信号に基づいて、前記CPUに対して供給すべき命令の読み出しを、前記第1のフラッシュメモリから前記読み出し可能状態にある第2のフラッシュメモリに切り替えること、を含む。
本発明によれば、命令コードを格納したフラッシュメモリを含むシステム・イン・パッケージ型半導体装置における命令の読み出し速度を改善することができるようになる。
より具体的には、本発明によれば、命令コードを格納したNOR型シリアルフラッシュメモリを含むシステム・イン・パッケージ型半導体装置において、CPUが分岐に関わる命令を読み出して実行する場合であっても、CPUを必要以上にホールドさせることのなく、CPUの効率的な実行を実現することができるようになる。
本発明の他の技術的特徴、目的、及び作用効果乃至は利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
本発明の一実施形態に係る半導体装置の概略構成を説明するためのブロックダイアグラムである。 本発明の一実施形態に係る半導体装置のメモリモジュールに格納される命令群を概念的に説明する図である。 本発明の一実施形態に係る半導体装置の機能的構成の一例を示すブロックダイアグラムである。 本発明の一実施形態に係る半導体装置のメモリI/Fの動作を説明するためのフローチャートである。 本発明の一実施形態に係る半導体装置のプログラムカウンタ監視部の動作を説明するためのフローチャートである。 本発明の一実施形態に係る半導体装置の切り替え動作の一例を説明するタイミングチャートの一例を示す図である。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本発明は、その趣旨を逸脱しない範囲で種々変形(例えば各実施形態を組み合わせる等)して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
[第1の実施形態]
図1は、本発明の一実施形態に係る半導体装置の概略を説明するためのブロックダイアグラムである。同図に示すように、半導体装置100は、例えば、CPU110と、メモリモジュール120と、メモリインターフェース(以下、「メモリI/F」という。)130と、アクセス制御部140と、プログラムカウンタ監視部(以下、「PC監視部」という。)150と、割り込みコントローラ160とを含んで構成される。半導体装置100は、これら各種のコンポーネントが一体にパッケージ化されたシステム・イン・パッケージ(SIP)である。
CPU110は、プログラムとして記述された命令コード(以下、「命令」という。)を解釈することにより処理を実行するコンポーネントである。ここでは、「CPU」という語は、処理装置を意味するプロセッサやMPU、メインプロセッサ、マイクロコントローラ等と同義のものとして扱われ、また、マルチコアプロセッサを意味するものであっても良い。CPU110は、例えば、演算回路と、デコーダと、各種のレジスタと、プログラムカウンタとを含んで構成される(図3参照)。CPU110はまた、キャッシュメモリを含んで良い。CPU110は、汎用レジスタ方式であっても良いし、アキュムレータ方式であっても良く、また、これら以外の方式であっても良い。CPU110は、命令バス及びデータバスを介してメモリI/F130と接続される。
メモリモジュール120は、相互に独立して動作可能な少なくとも2つ以上の書き換え可能な不揮発性メモリを含んで構成される。本実施形態のメモリモジュール120の一例は、NOR型フラッシュメモリであり、より具体的には、NOR型シリアルフラッシュメモリである。本例では、メモリモジュール120は、第1のNOR型シリアルフラッシュメモリ(以下、「第1のフラッシュメモリ」という。)120Aと、第2のNOR型シリアルフラッシュメモリ(以下、「第2のフラッシュメモリ」という。)120Bとを含んで構成されている。第1のフラッシュメモリ120A及び第2のフラッシュメモリ120Bは、CPU110によって実行される命令群を格納する。具体的には、本実施形態では、第1のフラッシュメモリ120Aは、メインルーチンを構成する第1の命令群を格納し、第2のフラッシュメモリ120Bは、第1の命令群に含まれる分岐に関する制御命令にしたがって実行される分岐ルーチンを構成する第2の命令群を格納する。図2は、第1のフラッシュメモリ120A及び第2のフラッシュメモリ120Bのそれぞれに格納される命令群を概念的に説明する図である。第1のフラッシュメモリ120A及び第2のフラッシュメモリ120Bは、所定のイネーブル信号にしたがって、所定のアドレスからデータを読み出すことが可能な状態になる。
なお、メモリモジュール120は、NOR型シリアルフラッシュメモリに加え、NAND型フラッシュメモリを含んでも良いし、また、揮発性メモリ(例えばDRAM)を含んでも良い。
メモリI/F130は、CPU110とメモリモジュール120とのインターフェース回路である。具体的には、メモリI/F130は、所定のクロックに従ってメモリモジュール120から読み出された命令をFIFOバッファ(プリフェッチバッファ)に格納した後、該命令をCPU110の命令バスに適合したデータ形式に変換して、CPU110に供給する。すなわち、本例では、第1のフラッシュメモリ120A及び第2のフラッシュメモリ120Bはシリアルタイプであることから、メモリI/F130は、シリアル形式で出力される命令を構成するデータ列を、パラレル形式のデータ列に変換し、CPU110に供給する。この場合、命令は、典型的には、パイプライン方式で出力され得る。図示はしていないが、「プログラムデータ」を構成するデータ列は、所定のデータ形式に変換され、データバスを介して、CPU110に供給される。本実施形態のメモリI/F130は、後述するように、命令をプリフェッチバッファに格納した段階で、該命令をプリデコードし、分岐命令があるか否かを検出する。また、本実施形態のメモリI/F130は、後述するように、該検出の結果に基づいて、所定のタイミングで、第1のフラッシュメモリ120A及び第2のフラッシュメモリ120Bのいずれか一方が選択されるように、I/O信号線を切り替える。
アクセス制御部140は、メモリモジュール120に対するアクセスを制御する回路である。すなわち、アクセス制御部140は、指定された所定のアドレスを示す値で第1のフラッシュメモリ120A及び第2のフラッシュメモリ120Bの少なくとも一方が読み出し可能状態になるように制御する。また、アクセス制御部140は、読み出し可能状態になった第1のフラッシュメモリ120A及び前記第2のフラッシュメモリ120Bの少なくとも一方から、データ列(命令)が読み出されるように制御する。
PC監視部150は、CPU110のプログラムカウンタ115(図3参照)を監視し、プログラムカウンタ115の値が分岐命令等に従って変化した場合に、メモリI/F130で検出された分岐命令が示す分岐先アドレス(ジャンプ先アドレス)を示す値(以下、「分岐先アドレス値」という。)とプログラムカウンタ115の値とを比較し、両者が一致した場合に、所定のトリガ信号を出力する。出力された所定のトリガ信号は、例えば、メモリI/F130及びアクセス制御部140に入力される。
割り込みコントローラ160は、図示しない周辺回路乃至は機器から送信される割り込み要求信号を受信して、CPU110に対して所定の割り込みをかける回路である。すなわち、割り込みコントローラ160は、割り込み信号の内容に応じて、CPU110の動作タイミングに合わせて、指定された割り込みアドレス値でCPU110のプログラムカウンタを書き換え、これにより、CPU110の制御を該割り込みアドレスにジャンプさせる。本実施形態の割り込みコントローラ160はまた、割り込み要求信号を受信すると、該割り込み要求信号に応じたジャンプ先アドレスを示す値(以下、「ジャンプ先アドレス値」という。)をアクセス制御部140に出力する。この場合、割り込みコントローラ160は、CPU110への割り込みタイミングよりも前に、アクセス制御部140にジャンプ先アドレス値を出力する。アクセス制御部140は、該ジャンプ先アドレス値に従って、第1のフラッシュメモリ120A及び前記第2のフラッシュメモリの少なくとも一方を読み出し可能状態になるように制御する。
なお、本実施形態では、割り込みコントローラ160は、アクセス制御部140にジャンプ先アドレス値を出力し、その後、CPU110に対して割り込みをかけるように構成されているが、CPU110に対して割り込みをかける従前の割り込みコントローラとは別に、周辺回路等から送信される割り込み要求信号を検出し、アクセス制御部140にジャンプ先アドレス値を出力する割り込み検出回路が設けられても良い。すなわち、割り込み検出回路は、割り込み要求信号を受けると、まず、所定の動作クロックが示す第1のタイミングで、アクセス制御部140にジャンプ先アドレス値を出力し、その後、割り込みコントローラ160は、該所定の動作クロックが示す第2のタイミングで、CPU110に対して割り込みをかける。このように、割り込み検出回路と割り込みコントローラ110とが動作クロックを共通にすることで、割り込みコントローラ110がCPU110に対して割り込みをかけるよりも前のタイミングで、割り込み検出回路は、アクセス制御部140に割り込み要求によるジャンプ先アドレスを通知することができる。
図3は、本発明の一実施形態に係る半導体装置の機能的構成の一例を示すブロックダイアグラムである。同図では、図1に示した半導体装置のより詳細な機能的構成を説明するために、メモリI/F130の構成が詳細化されている。すなわち、同図に示すように、本実施形態のメモリI/F130は、例えば、切り替え制御部131と、分岐命令検出部132とを含んで構成される。また、CPU110においては、演算回路111と、命令レジスタ112と、デコーダ113と、汎用レジスタ114と、プログラムカウンタ115とが特に図示されている。
切り替え制御部131は、第1のフラッシュメモリ120A及び第2のフラッシュメモリ120Bのいずれか一方が選択されるように、そのI/O信号線を切り替えるための回路である。切り替え制御は、例えば、PC監視部150から出力される所定のトリガ信号に基づいて行われる。選択されたフラッシュメモリからシリアル形式で読み出されたデータ列は、分岐命令検出部132に供給される。
分岐命令検出部132は、例えば、図示しないプリフェッチバッファを備え、選択されたフラッシュメモリから読み出されたデータ列を該プリフェッチバッファにバッファしながら、パラレル形式のデータ(命令)に変換し、CPU110の命令バスに出力する。命令検出部132から出力された命令は、CPU110の命令レジスタに取り込まれる。また、バッファリング中、分岐命令検出部132は、該バッファされたデータ列をプリデコードして、特定の命令(例えば、分岐命令、サブルーチン命令等)が含まれるか否かを判断し、例えば分岐命令が含まれると判断する場合に、該分岐命令が示す分岐先アドレス値を取得し、これをアクセス制御部140及びPC監視部150のそれぞれに出力する。
なお、分岐命令検出部132は、第1のフラッシュメモリ120Aからデータ列が順次に読み出されている間は、上述のように、メインルーチンから分岐ルーチンへ分岐制御するための分岐命令の検出を行うが、第2のフラッシュメモリ120Bに切り替えられ、第2のフラッシュメモリ120Bからデータ列が順次に読み出されている間は、分岐ルーチンからメインルーチンへ復帰制御するための所定の命令の検出を行う。すなわち、分岐命令検出部132は、メインルーチンへ復帰制御するための所定の命令をアドレス制御部140及びPC監視部150に出力する。
図4は、本発明の一実施形態に係る半導体装置のメモリI/Fの動作を説明するためのフローチャートである。
まず、半導体装置100が起動されると、初期化処理として、各コンポーネントの動作確認後、切り替え制御部131は、第1のフラッシュメモリ120AのI/O信号線を選択する(S401)。この状態で、CPU110は、第1のフラッシュメモリ120Aからの読み出しが可能になるため、プログラムカウンタ115の値に従って、第1のフラッシュメモリ120Aから順番にデータ列の読み出しが開始されるように制御する。
メモリI/F130は、第1のフラッシュメモリ120Aからデータ列が読み出されると、該データ列をプリフェッチバッファにバッファする(S402)。分岐命令検出部132は、第1のフラッシュメモリ120Aからの読み出しであるか、第2のフラッシュメモリ120Bからの読み出しであるかによって、以下に示すような、それぞれ異なる処理を行う。
すなわち、分岐命令検出部132は、第1のフラッシュメモリ120Aからの読み出しであると判断する場合(S403のYes)、分岐命令検出部132は、該データ列(即ち、命令)のプリデコードを行う(S404)。プリデコードの結果、分岐命令検出部132は、該命令が分岐命令でないと判断する場合(S405のNo)、該データ列を命令バスに適合する所定のデータ形式に変換し、所定のタイミングで、CPU110の命令レジスタ112に出力する(S408)。
一方、プリデコードの結果、該命令が分岐命令であると判断する場合(S405のYes)、分岐命令検出部132は、該分岐命令が示す分岐先アドレス値を取得し(S406)、該取得した分岐先アドレス値をアクセス制御部140及びPC監視部150のそれぞれに出力する(S407)。そして、分岐命令検出部132は、該データ列を命令バスに適合する所定のデータ形式に変換し、CPU110の命令レジスタに出力する(S408)。
これに対して、分岐命令検出部132は、第1のフラッシュメモリ120Aからの読み出しでない、すなわち、第2のフラッシュメモリ120Bからの読み出しであると判断する場合(S403のNo)、分岐命令検出部132は、同様に、該データ列(命令)のプリデコードを行って(S409)、該データ列が復帰制御に関する命令であるか否かを判断する(S410)。プリデコードの結果、該命令が復帰制御に関する命令でないと判断する場合(S410のNo)、分岐命令検出部132は、該データ列を命令バスに適合する所定のデータ形式に変換し、所定のタイミングで、CPU110の命令レジスタ112に出力する(S408)。
一方、プリデコードの結果、該命令が復帰制御に関する命令であると判断する場合(S410のYes)、分岐命令検出部132は、該命令が示す復帰先アドレス値(例えば、ジャンプ先アドレス値)を取得し(S411)、該取得した復帰先アドレスをアクセス制御部140及びPC監視部150のそれぞれに出力する(S412)。そして、分岐命令検出部132は、該データ列を命令バスに適合する所定のデータ形式に変換し、CPU110の命令レジスタに出力する(S408)。
なお、分岐命令検出部132は、分岐命令のうち、分岐先アドレス値を取得可能な特定の分岐命令のみを検出するようにしても良い。すなわち、分岐命令検出部132は、分岐先アドレス値を取得できない分岐命令については、他の命令と同様に、単に、CPU110に供給する。分岐先アドレス値を取得できない分岐命令の一例は、CPU110の実行時に分岐先アドレスが決定されるレジスタ間接分岐命令である。
図5は、本発明の一実施形態に係る半導体装置のプログラムカウンタ監視部の動作を説明するためのフローチャートである。
すなわち、同図に示すように、PC監視部150は、まず、分岐命令検出部132から所定のアドレス値(例えば分岐先アドレス値)が送られてきたか否かを監視する(S501)。PC監視部150は、分岐先アドレス値が送られてきたことを検出すると(S501のYes)、該分岐先アドレス値をレジスタに格納し(S502)、プログラムカウンタ115の監視モードに入る(S503〜S504)。すなわち、PC監視部150は、プログラムカウンタ115を参照して(S503)、プログラムカウンタ115の値が通常のインクリメント値(例えば“1”)以外の値で書き換えられたか否かを判断する(S504)。通常のインクリメント値以外の値で書き換えられる場合とは、例えば、分岐先アドレス値がセットされる場合である(PC≠PC+1)。PC監視部150は、プログラムカウンタ115の値が通常のインクリメント値以外の値で書き換えられたと判断する場合(S504のYes)、レジスタに格納されている分岐先アドレス値とプログラムカウンタ115の値とが一致するか否かを判断する(S505)。PC監視部150は、レジスタに格納された分岐先アドレスとプログラムカウンタ115の値とが一致すると判断する場合(S505のYes)、所定のトリガ信号を切り替え制御部131及びアクセス制御部140のそれぞれに出力する(S506)。これにより、データ列の読み出し元は、第1のフラッシュメモリ120Aから第2のフラッシュメモリ120Bに切り替えられることになる。続いて、PC監視部150は、レジスタをリセットし(S507)、次の監視動作に備える(S501)。
PC監視部150は、分岐命令検出部132から復帰制御に関するアドレス値が送られてきたことを検出した場合も、上記と同様に処理を行う。
図3に戻り、半導体装置100における第1のフラッシュメモリ120Aから第2のフラッシュメモリ120Bへの切り替え動作について説明する。
すなわち、まず、半導体装置100が初期化されると、アクセス制御部140は、イネーブル信号ENA1を第1のフラッシュメモリ120Aに供給して、クロックCLK1(図示せず)が第1のフラッシュメモリ120Aに供給されるように制御するとともに、第1のフラッシュメモリ120Aの所定のアドレス(例えばプログラムカウンタ115が示すアドレス)からデータ列が読み出し可能になるように制御する。この状態で、切り替え制御部131は、第1のフラッシュメモリ120AのI/O信号線を選択することで、プログラムカウンタ115の値に従って、第1のフラッシュメモリ120Aからデータ列の読み出しが開始される。
第1のフラッシュメモリ120Aから読み出されたデータ列がプリフェッチバッファにバッファされると、分岐命令検出部132は、プリデコードを行い、分岐命令があるか否かを判断する。分岐命令検出部132は、プリデコードした命令が分岐命令以外の命令であると判断する場合には、命令バスを介して、該命令をCPU110に供給し、これにより、該命令はCPU110の命令レジスタ112に格納されることになる。一方、分岐命令検出部132は、プリデコードした命令が分岐命令であると判断する場合には、該分岐命令をCPU110に供給するとともに、該分岐命令が示す分岐先アドレス値を取得して、これをアクセス制御部140及びPC監視部150のそれぞれに出力する。
アクセス制御部140は、分岐先アドレス値を受けると、イネーブル信号ENA2を供給して、クロックCLK2(図示せず)が第2のフラッシュメモリ120Bに供給されるように制御し、第2のフラッシュメモリ120Bが該分岐先アドレスの位置からデータ列を読み出し可能になるように制御する。アクセス制御部140は、第2のフラッシュメモリ120Bから例えばREADY信号(図示せず)を受け、第2のフラッシュメモリ120Bが読み出し可能状態になったことを検出すると、一旦、イネーブル信号ENA2の供給を停止し、CPU110での準備が整うまで、第2のフラッシュメモリ120Bをアイドル状態にする。かかるアイドル状態を設けることで、不要なクロックの供給を停止し、半導体装置100の省電力化を図ることができる。
また、かかるアクセス制御部140の動作に並行して、PC監視部150は、分岐先アドレスを図示しないレジスタに一時的に格納する。
CPU110においては、典型的には、分岐命令検出部132から命令バスを介して供給された命令が命令レジスタ112に格納されると、該命令は、例えばパイプライン方式で、デコーダ113によって順次にデコードされ、これにより、演算回路111は、該デコーダ113の解釈結果及び汎用レジスタ114の値に基づいて所定の演算を実行することで、所望の処理を遂行することができる。デコーダ113によりデコードされる毎に、プログラムカウンタ115の値は、順次にインクリメントされる(すなわち、PC=PC+1)。デコーダ113が、命令を分岐命令であると判断すると、プログラムカウンタ115には、該分岐命令が示す分岐先アドレスがセットされる(すなわち、PC≠PC+1)。
プログラムカウンタ115の値は、PC監視部150によって監視されている。すなわち、PC監視部150は、プログラムカウンタ115に分岐先アドレス値がセットされたか否か、及び分岐命令検出部132から受け取った分岐先アドレス値とプログラムカウンタ115の値とが一致するか否かを監視している。PC監視部150は、プログラムカウンタ115に分岐先アドレス値がセットされ、かつ、分岐命令検出部132から受け取った分岐先アドレスとプログラムカウンタ115の値とが一致すると判断する場合、所定のトリガ信号を切り替え制御部131及びアクセス制御部140のそれぞれに出力し、レジスタの内容をリセットする。これを受けて、切り替え制御部131は、I/O信号線を第1のフラッシュメモリ120Aから第2のフラッシュメモリ120Bに切り替える。また、アクセス制御部140は、第1のフラッシュメモリ120Aに対するイネーブル信号ENA1の供給を停止し、読み出し状態可能にある第2のフラッシュメモリ120Bに対するイネーブル信号ENA2の供給を再開する。これにより、第2のフラッシュメモリ120Bに対するクロックCLK2の供給が再開され、直ちに、第2のフラッシュメモリ120Bから分岐先アドレスに従う分岐ルーチンの命令が順次に読み出されることになる。
ところで、分岐命令検出部132は、分岐先アドレスを取得できない分岐命令を検出した場合、他の通常の命令と同様に、単に、CPU110に供給する。CPU110において、デコーダ113によって分岐先アドレス値を取得できない分岐命令がデコードされることで、プログラムカウンタ115に該デコードに従った値がセットされる。つまり、プログラムカウンタ115の値は、通常のインクリメント値以外の値で書き換えられることになる(即ち、PC≠PC+1)。一方で、PC監視部150は、プログラムカウンタ115の値が通常のインクリメント値以外の値にセットされたことを検出するが、レジスタの内容はNullであって、したがって、分岐先アドレス値を格納していない。従って、PC監視部150は、CPU110に対してHOLD信号を出力し、該分岐先アドレス値に従ってフラッシュメモリが読み出し可能状態になるまで、CPU110の動作を一時的にホールドさせる。一方で、PC監視部150は、プログラムカウンタ115の値をアクセス制御部140に出力するとともに、切り替え制御部131に所定のトリガ信号を出力する。これを受け、アクセス制御部140は、直ちに、第2のフラッシュメモリ120Bが動作するように制御するとともに、第1のフラッシュメモリ120Aが動作を停止するように制御し、また、切り替え制御部131は、I/O信号線を第1のフラッシュメモリ120Aから第2のフラッシュメモリ120Bに切り替える。
第2のフラッシュメモリ120Bからデータ列が読み出され、上述したように、分岐先アドレス値に対応する命令がバッファされると、分岐命令検出部132は、例えばREADY信号をPC監視部150に出力する。PC監視部150は、これを受けて、CPU110に対するHOLD信号を解除し、CPU110の動作を再開させる。これにより、分岐命令検出部132から供給された命令は、CPU110においてデコードされ、演算実行されることになる。
図6は、本発明の一実施形態に係る半導体装置の切り替え動作の一例を説明するタイミングチャートの一例を示す図である。
同図に示すように、クロックCLK1に従い、第1のフラッシュメモリ120Aからデータ列(命令)が読み出されているとする。この状態で、例えば、分岐命令検出部132が分岐命令を検出すると(時刻t0)、該分岐命令が示す分岐先アドレス値を取得して、これをアドレス制御部140及びPC監視部150のそれぞれに出力する。一方で、分岐命令検出部132は、パイプライン方式で、データ列を所定のデータ形式に変換しながら、命令バスを介してCPU110に供給する。
アクセス制御部140は、分岐先アドレス値を受けると、イネーブル信号ENA2を“H”にする(時刻t1)。これにより、第2のフラッシュメモリ120Bに対してクロックCLK2の供給が開始され、第2のフラッシュメモリ120Bは該分岐先アドレスの位置から読み出しが可能になるように動作を開始する。
第2のフラッシュメモリ120Bは読み出し可能状態になると、例えば、図示しないREADY信号を出力する。アクセス制御部140は、これを受けて、イネーブル信号ENA2を“L”にし、第2のフラッシュメモリ120Bを読み出し可能状態にしたまま、一旦、アイドル状態にさせる(時刻t2)。
CPU110に供給された命令は、順次に、デコードされ、演算実行されることとなるが、これに伴い、プログラムカウンタ115の値が1ずつインクリメントされることで、メモリモジュール120から読み出されるアドレス値が更新されていく。デコーダ113によって分岐命令がデコードされると、その分岐先アドレス値がプログラムカウンタ115にセットされる。PC監視部150は、分岐命令検出部132から受け取った分岐先アドレス値とプログラムカウンタ115の値とが一致すると判断すると、所定のトリガ信号を切り替え制御部131及びアクセス制御部140のそれぞれ出力する(時刻t3)。
切り替え制御部131は、所定のトリガ信号を検出すると、選択信号SELを出力し、I/O信号線を第1のフラッシュメモリ120Aから第2のフラッシュメモリ120Bに切り替える(時刻t4)。アクセス制御部140は、これと略同時並行的に、第1のフラッシュメモリ120Aに対するイネーブル信号ENA1を“L”にし、第2のフラッシュメモリ120Bに対するイネーブル信号ENA2を“H”にする。これにより、第1のフラッシュメモリ120Aに対するクロックCLK1の供給が停止し、第2のフラッシュメモリ120Bに対してクロックCLK2の供給が開始され、第2のフラッシュメモリ120Bから分岐ルーチンの命令が読み出されるようになる(時刻t5)。
以上のように、本実施形態によれば、命令コードを格納した切り替え選択可能な例えば2個のフラッシュメモリを用意し、メモリI/F130が、一方のフラッシュメモリから読み出されるデータから、CPU110による演算実行前に、特定の命令を検出し、これを受けて、アクセス制御部140が、他方のフラッシュメモリの読み出しの準備を行うので、CPU110による該特定の命令が演算実行された時点で、該他方のフラッシュメモリから、直ちに、次の命令が読み出されるようになる。すなわち、読み出しアドレスに連続性がない場合であっても、データが読み出されているフラッシュメモリとは別のフラッシュメモリを事前に読み出し可能状態にしておくことで、CPUの待ち時間を減らし、効率的なCPUの利用を可能にする。
[第2の実施形態]
本実施形態は、半導体装置100において、サブルーチン命令に従って、第1のフラッシュメモリ120Aと第2のフラッシュメモリ120Bとの間で切り替え制御を行う技術を開示する。以下の説明では、分岐命令検出部132が、分岐命令に代え、又はこれに加えて、サブルーチン命令を検出することによって、フラッシュメモリの切り替え制御が行われる例について、図3を参照しつつ、説明する。
本実施形態では、例えば、第1のフラッシュメモリ120Aは、メインルーチンを構成する第1の命令群を格納し、第2のフラッシュメモリ120Bは、分岐ルーチンを構成する第2の命令群に代え、又はこれに加え、第1の命令群に含まれるサブルーチン命令に従って実行されるサブルーチンを構成する第3の命令群を格納する。
上述したように、半導体装置100が初期化されると、アクセス制御部140は、イネーブル信号ENA1を第1のフラッシュメモリ120Aに供給して、クロックCLK1(図示せず)が第1のフラッシュメモリ120Aに供給されるように制御するとともに、第1のフラッシュメモリ120Aの所定のアドレス(例えばプログラムカウンタ115が示すアドレス)からデータ列が読み出し可能になるように制御する。この状態で、切り替え制御部131は、第1のフラッシュメモリ120AのI/O信号線を選択することで、第1のフラッシュメモリ120Aからデータ列の読み出しが開始される。
第1のフラッシュメモリ120Aから読み出されたデータ列がプリフェッチバッファにバッファされると、分岐命令検出部132は、プリデコードを行い、サブルーチン命令があるか否かを判断する。分岐命令検出部132は、プリデコードした命令がサブルーチン命令(及び分岐命令)以外であると判断する場合には、命令バスを介して、該命令をCPU110に供給し、これにより、該命令はCPU110の命令レジスタ112に保持されることになる。一方、分岐命令検出部132は、プリデコードした命令がサブルーチン命令であると判断する場合には、該サブルーチン命令をCPU110に供給するとともに、該サブルーチン命令が示すジャンプ先アドレス値を取得して、これをアクセス制御部140及びPC監視部150のそれぞれに出力する。
アクセス制御部140は、ジャンプ先アドレス値を受けると、イネーブル信号ENA2を供給して、クロックCLK2(図示せず)が第2のフラッシュメモリ120Bに供給されるように制御し、第2のフラッシュメモリ120Bが該ジャンプ先アドレスからデータ列が読み出し可能になるように制御する。アクセス制御部140は、第2のフラッシュメモリ120Bから例えばREADY信号(図示せず)を受け、第2のフラッシュメモリ120Bが読み出し可能状態になったことを検出すると、一旦、第2のフラッシュメモリ120Bをアイドル状態にする。一方で、PC監視部150は、ジャンプ先アドレス値を図示しないレジスタに一時的に格納する。
一方、CPU110において、デコーダ113によりサブルーチン命令がデコードされた際、スタックポインタに従って、プログラムカウンタ115に、サブルーチンの復帰先アドレス値(すなわち、PC=PC+1)がスタックされ、さらに、該サブルーチン命令が示すジャンプ先アドレス値がスタックされる。
PC監視部150は、プログラムカウンタ115にジャンプ先アドレス値がセットされたことを検出すると、分岐命令検出部132から受け取ったジャンプ先アドレス値とプログラムカウンタ115の値とが一致するか否かを判断する。すなわち、PC監視部150は、プログラムカウンタ115にジャンプ先アドレス値がセットされ、かつ、分岐命令検出部132から受け取ったジャンプ先アドレス値とプログラムカウンタ115の値とが一致すると判断する場合、所定のトリガ信号を切り替え制御部131及びアクセス制御部140に出力する。また、PC監視部150は、プログラムカウンタ115のスタックポインタに従って、サブルーチンの復帰先アドレス値をレジスタに格納する。
切り替え制御部131は、所定のトリガ信号を受けると、I/O信号線を第1のフラッシュメモリ120Aから第2のフラッシュメモリ120Bに切り替える。また、アクセス制御部140は、第1のフラッシュメモリ120Aに対するイネーブル信号ENA1の供給を停止し、アイドル状態可能にある第2のフラッシュメモリ120Bに対するイネーブル信号ENA2の供給を再開する。これにより、第2のフラッシュメモリ120Bに対するクロックCLK2の供給が再開され、直ちに、第2のフラッシュメモリ120Bからジャンプ先アドレス値に従うサブルーチンの命令が順次に読み出されることになる。
分岐命令検出部132は、第2のフラッシュメモリ120Bから読み出されたデータ列からサブルーチンの終了を示すリターン命令を検出すると、リターン信号をPC監視部150に出力する。PC監視部150は、リターン信号を受けて、レジスタに格納されている復帰先アドレス値をアドレス制御部140に出力する。
アドレス制御部140は、復帰先アドレス値を受けると、イネーブル信号ENA2を供給して、クロックCLK1が第1のフラッシュメモリ120Aに供給されるように制御し、第1のフラッシュメモリ120Aが該復帰先アドレスの位置からデータ列を読み出し可能になるように制御する。アクセス制御部140は、第1のフラッシュメモリ120Aから例えばREADY信号を受け、第1のフラッシュメモリ120Aが読み出し可能状態になったことを検出すると、一旦、第1のフラッシュメモリ120Aをアイドル状態にする。
一方、CPU110において、デコーダ113によりリターン命令がデコードされた際、スタックポインタに従って、プログラムカウンタ115の値が、サブルーチンのリターンアドレスにセットされる。これにより、PC監視部150は、レジスタに格納した復帰先アドレス値とプログラムカウンタ115の値とが一致したことを検出し、所定のトリガ信号を切り替え制御部131及びアドレス制御部140のそれぞれに出力するとともに、レジスタの内容をリセットする。
切り替え制御部131は、所定のトリガ信号を受けると、I/O信号線を第2のフラッシュメモリ120Bから第1のフラッシュメモリ120Aに切り替える。また、アクセス制御部140は、第2のフラッシュメモリ120Bに対するイネーブル信号ENA2の供給を停止し、アイドル状態可能にある第1のフラッシュメモリ120Aに対するイネーブル信号ENA1の供給を再開する。これにより、第1のフラッシュメモリ120Aに対するクロックCLK1の供給が再開され、直ちに、プログラムカウンタ115の値に従って、第1のフラッシュメモリ120Aからリターンアドレスに従う命令が順次に読み出されることになる。
なお、本実施形態では、サブルーチンからの復帰先アドレス値として、プログラムカウンタ115の現在値の次の値を用いたが、これに限られるものではない。すなわち、サブルーチンによっては、例外的な復帰先アドレスが指定されることもあり、そのようなアドレス値がプログラムカウンタ115にスタックされるものであっても良い。
以上のように、本実施形態によれば、上記第1の実施形態と同様の利点乃至は効果を得ることができる。すなわち、本実施形態によれば、命令コードを格納した切り替え選択可能な例えば2個のフラッシュメモリを用意し、メモリI/F130が、一方のフラッシュメモリから読み出されるデータから、CPU110による演算実行前に、特定の命令(サブルーチン命令)を検出し、これを受けて、アクセス制御部140が、他方のフラッシュメモリの読み出しの準備を行うので、CPU110による該特定の命令が演算実行された時点で、該他方のフラッシュメモリから、直ちに、次の命令が読み出されるようになる。また、本実施形態によれば、CPU110による演算実行前にリターン命令を検出し、これを受けて、元のフラッシュメモリの読み出しの準備を行うので、CPU110による該リターン命令が演算実行された時点で、該他方のフラッシュメモリの復帰先アドレスの位置から、直ちに、次の命令が読み出されるようになる。
[第3の実施形態]
本実施形態は、半導体装置100において、CPU割り込みの発生に従って、第1のフラッシュメモリ120Aと第2のフラッシュメモリ120Bとの間で切り替え制御を行う技術を開示する。以下の説明では、割り込みコントローラ160が、CPU割り込みの発生を検出することによって、フラッシュメモリの切り替え制御が行われる例について、図3を参照しつつ、説明する。
本実施形態では、例えば、第1のフラッシュメモリ120Aは、メインルーチンを構成する第1の命令群を格納し、第2のフラッシュメモリ120Bは、分岐ルーチンを構成する第2の命令群及び/又はサブルーチンを構成する第3の命令群に代え、又はこれに加え、割り込みルーチンを構成する第4の命令群を格納する。
上述したように、第1のフラッシュメモリ120Aからデータ列が読み出されているものとする。かかる状況で、外部の周辺装置等から割り込み要求信号が出力されると、割り込みコントローラ160は、これを検出し、割り込み信号に基づく割り込みジャンプ先アドレスをアドレス制御部140に出力する。これを受けて、アクセス制御部140は、イネーブル信号ENA2を供給して、クロックCLK2(図示せず)が第2のフラッシュメモリ120Bに供給されるように制御し、第2のフラッシュメモリ120Bが該割り込みジャンプ先アドレスからデータ列が読み出し可能になるように制御する。アクセス制御部140は、第2のフラッシュメモリ120Bから例えばREADY信号(図示せず)を受け、第2のフラッシュメモリ120Bが読み出し可能状態になったことを検出すると、一旦、第2のフラッシュメモリ120Bをアイドル状態にする。一方で、PC監視部150は、ジャンプ先アドレス値を図示しないレジスタに一時的に格納する。
一方、CPU110においては、割り込みコントローラ160による割り込みがかかると、スタックポインタに従って、プログラムカウンタ115に、該割り込みに従う割り込みルーチンの復帰先アドレス値(すなわち、PC=PC+1)がスタックされ、さらに、該割り込みルーチンが示すジャンプ先アドレス値がスタックされる。また、割り込みコントローラ160は、該割り込みに従うジャンプ先アドレス値をPC監視部150に出力する。
PC監視部150は、プログラムカウンタ115にジャンプ先アドレス値がセットされたことを検出すると、レジスタに格納されたジャンプ先アドレス値とプログラムカウンタ115の値とが一致するか否かを判断する。PC監視部150は、プログラムカウンタ115にジャンプ先アドレス値がセットされ、かつ、分岐命令検出部132から受け取ったジャンプ先アドレス値とプログラムカウンタ115の値とが一致すると判断する場合、所定のトリガ信号を、切り替え制御部131及びアクセス制御部140に出力するとともに、割り込みルーチンからの復帰先アドレス値をレジスタに格納する。
切り替え制御部131は、所定のトリガ信号を受けると、I/O信号線を第1のフラッシュメモリ120Aから第2のフラッシュメモリ120Bに切り替える。また、アクセス制御部140は、第1のフラッシュメモリ120Aに対するイネーブル信号ENA1の供給を停止し、アイドル状態可能にある第2のフラッシュメモリ120Bに対するイネーブル信号ENA2の供給を再開する。これにより、第2のフラッシュメモリ120Bに対するクロックCLK2の供給が再開され、直ちに、第2のフラッシュメモリ120Bからジャンプ先アドレスに従う割り込みルーチンの命令が順次に読み出されることになる。
分岐命令検出部132は、第2のフラッシュメモリ120Bから読み出されたデータ列から割り込みルーチンの終了を示すリターン命令を検出すると、リターン信号をPC監視部150に出力する。PC監視部150は、リターン信号を受けて、レジスタに保持されている復帰先アドレス値をアドレス制御部140に出力する。
アドレス制御部140は、復帰先アドレスを受けると、イネーブル信号ENA1を供給して、クロックCLK1が第1のフラッシュメモリ120Aに供給されるように制御し、第1のフラッシュメモリ120Aが該復帰先アドレスの位置からデータ列を読み出し可能になるように制御する。アクセス制御部140は、第1のフラッシュメモリ120Aから例えばREADY信号を受け、第1のフラッシュメモリ120Aが読み出し可能状態になったことを検出すると、一旦、第1のフラッシュメモリ120Aをアイドル状態にする。
一方、CPU110において、デコーダ113によりリターン命令がデコードされた際、スタックポインタに従って、プログラムカウンタ115の値がサブルーチンの復帰先アドレス値となる。これにより、PC監視部150は、レジスタに保持した復帰先アドレス値とプログラムカウンタ115の値とが一致したことを検出し、所定のトリガ信号を切り替え制御部131及びアドレス制御部140のそれぞれに出力するとともに、レジスタの内容をリセットする。
切り替え制御部131は、所定のトリガ信号を受けると、I/O信号線を第2のフラッシュメモリ120Bから第1のフラッシュメモリ120Aに切り替える。また、アクセス制御部140は、第2のフラッシュメモリ120Bに対するイネーブル信号ENA2の供給を停止し、アイドル状態可能にある第1のフラッシュメモリ120Aに対するイネーブル信号ENA1の供給を再開する。これにより、第1のフラッシュメモリ120Aに対するクロックCLK1の供給が再開され、直ちに、第1のフラッシュメモリ120Aからリターンアドレスに従う命令が順次に読み出されることになる。
以上のように、本実施形態によれば、上記第1及び第2の実施形態と同様の利点乃至は効果を得ることができる。すなわち、本実施形態によれば、命令コードを格納した切り替え選択可能な例えば2個のフラッシュメモリを用意し、割り込みコントローラ160がCPU割り込みを検出すると、これを受けて、アクセス制御部140が、他方のフラッシュメモリの読み出しの準備を行うので、CPU110による該割り込みに関する命令が演算実行された時点で、該他方のフラッシュメモリから、直ちに、次の命令が読み出されるようになる。また、本実施形態によれば、CPU110による演算実行前にリターン命令を検出し、これを受けて、元のフラッシュメモリの読み出しの準備を行うので、CPU110による該リターン命令が演算実行された時点で、該他方のフラッシュメモリの復帰先アドレスの位置から、直ちに、次の命令が読み出されるようになる。
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。例えば、本実施形態では、2個のフラッシュメモリが選択的に切り替え制御されるものとしたが、これに限られるものではない。例えば、複数の分岐ルーチンが入れ子構造になっている場合に、該複数の分岐ルーチンのそれぞれを構成する命令群を異なるフラッシュメモリに格納し、これらのフラッシュメモリを適宜に切り替え制御されるようにしても良い。
また、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ(技術的事項)を、適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。
本発明は、半導体装置の分野にて広く利用することができる。
100…半導体装置
110…CPU
111…演算回路
112…命令レジスタ
113…デコーダ
114…汎用レジスタ
115…プログラムカウンタ
120…メモリモジュール
120A…第1のフラッシュメモリ
120B…第2のフラッシュメモリ
130…メモリインターフェース
131…切り替え制御部
132…命令検出部
140…アクセス制御部
150…プログラムカウンタ監視部
160…割り込みコントローラ

Claims (11)

  1. 第1の命令群を記憶する第1のフラッシュメモリと、
    前記第1の命令群に含まれる所定の制御命令に従って実行される第2の命令群を記憶する第2のフラッシュメモリと、
    前記第1のフラッシュメモリ及び前記第2のフラッシュメモリに対するアクセスを制御するアクセス制御部と、
    前記第1のフラッシュメモリ及び前記第2のフラッシュメモリのいずれか一方を選択し、該選択されたフラッシュメモリから順次に読み出される命令をCPUに供給するメモリインターフェースであって、該命令が第1の制御命令であるか否かを判断し、該命令が第1の制御命令であると判断する場合に、該第1の制御命令が示す第1のジャンプ先アドレス値を取得する命令検出部を含む、メモリインターフェースと、
    CPUのプログラムカウンタの値と前記命令検出部により取得された第1のジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記第1のジャンプ先アドレスとが一致する場合に、第1のトリガ信号を出力するプログラムカウンタ監視部と、を備え、
    前記アクセス制御部は、前記命令検出部により取得された第1のジャンプ先アドレス値に従って前記第2のフラッシュメモリが読み出し可能状態になるように制御し、
    前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第1のトリガ信号に基づいて前記第2のフラッシュメモリを選択する、
    半導体装置。
  2. 前記プログラムカウンタ監視部は、前記プログラムカウンタの値が所定のインクリメント値以外の値に書き換えられた場合に、前記プログラムカウンタの値と前記第1のジャンプ先アドレスとの比較を行う、請求項1記載の半導体装置。
  3. 前記プログラムカウンタ監視部は、前記取得された第1のジャンプ先アドレス値を格納するレジスタを備える、請求項2記載の半導体装置。
  4. 前記プログラムカウンタ監視部は、前記プログラムカウンタの値が所定のインクリメント値以外の値に書き換えられ、かつ、前記レジスタの内容がNullである場合に、前記CPUがHOLD状態になるように制御する、請求項3記載の半導体装置。
  5. 前記プログラムカウンタ監視部は、前記CPUによりデコードされた命令に従って前記第2のフラッシュメモリが読み出し可能状態になった場合に、前記CPUのHOLD状態を解除するように制御する、請求項4記載の半導体装置。
  6. 前記アクセス制御部は、前記第2のフラッシュメモリが読み出し可能状態になった場合に、前記第1のトリガ信号を受けるまで、前記第2のフラッシュメモリがアイドル状態になるように制御する、請求項1記載の半導体装置。
  7. 前記命令検出部は、前記第2のフラッシュメモリから命令群が読み出されている場合に、該命令が第2の命令であるか否かを判断し、該命令が第2の命令であると判断する場合に、該第2の命令が示す第2のジャンプ先アドレス値を取得し、
    前記アクセス制御部は、前記命令検出部により取得された第2のジャンプ先アドレス値に従って前記第1のフラッシュメモリが読み出し可能状態になるように制御し、
    前記プログラムカウンタ監視部は、前記プログラムカウンタの値と前記命令検出部により取得された第2のジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記第2のジャンプ先アドレスとが一致する場合に、第2のトリガ信号を出力し、
    前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第2のトリガ信号に基づいて前記第1のフラッシュメモリを選択する、
    請求項1記載の半導体装置。
  8. 外部の周辺回路及び周辺機器の少なくともいずれかから割り込み要求信号を受けて、前記CPUに割り込みをかける割り込みコントローラをさらに備え、
    前記割り込みコントローラは、前記割り込み要求信号に基づいて、該割り込みに従う割り込みジャンプ先アドレス値を取得し、
    前記アクセス制御部は、前記割り込みコントローラにより取得された割り込みジャンプ先アドレス値に従って前記第2のフラッシュメモリが読み出し可能状態になるように制御し、
    前記プログラムカウンタ監視部は、前記プログラムカウンタの値と前記割り込みコントローラにより取得された割り込みジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記割り込みジャンプ先アドレスとが一致する場合に、前記第1のトリガ信号を出力し、
    前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第1のトリガ信号に基づいて前記第2のフラッシュメモリを選択する、
    請求項1記載の半導体装置。
  9. 前記第1のフラッシュメモリ及び前記第2のフラッシュメモリのそれぞれは、NOR型シリアルフラッシュメモリである、請求項1乃至8のいずれか記載の半導体装置。
  10. CPUと、
    前記CPUによって実行される第1の命令群を記憶する第1のフラッシュメモリと、
    前記第1の命令群に含まれる所定の制御命令に従って実行される第2の命令群を記憶する第2のフラッシュメモリと、を備え、
    前記CPUによる命令の実行前に、前記第1のフラッシュメモリから読み出される命令が分岐命令であるか否かを判断し、該分岐命令であると判断する場合に、該分岐命令が示す分岐先アドレス値で前記第2のフラッシュメモリが読み出し動作するように指示し、
    該指示に従って前記第2のフラッシュメモリが読み出し動作可能な状態にある間に前記CPUのプログラムカウンタと前記分岐先アドレス値とが一致した場合に、前記第2のフラッシュメモリから前記第2の命令群の読み出しを開始する、
    半導体装置。
  11. CPUと、前記CPUによって実行される第1の命令群を記憶する第1のフラッシュメモリと、前記第1の命令群に含まれる所定の制御命令に従って実行される第2の命令群を記憶する第2のフラッシュメモリとを備える半導体装置における命令読み出し制御方法であって、
    前記第1のフラッシュメモリを選択的に制御して、前記第1の命令群を順次に読み出して、前記CPUに供給することと、
    前記第1の命令群を読み出している間に、前記第1の命令群の中から所定の制御命令を検出することと、
    前記所定の制御命令が検出される場合に、該所定の制御命令が示すジャンプ先アドレス値を取得することと、
    前記取得されたジャンプ先アドレス値に従って、前記第2のフラッシュメモリが読み出し可能状態になるように制御することと、
    前記ジャンプ先アドレスを取得した場合に、前記CPUのプログラムカウンタを監視し、前記プログラムカウンタの値と前記ジャンプ先アドレスとが一致するか否かを判断することと、
    前記プログラムカウンタの値と前記ジャンプ先アドレスとが一致すると判断する場合に、所定のトリガ信号を出力することと、
    前記出力された所定のトリガ信号に基づいて、前記CPUに対して供給すべき命令の読み出しを、前記第1のフラッシュメモリから前記読み出し可能状態にある第2のフラッシュメモリに切り替えることと、
    を含む、命令読み出し制御方法。







JP2014057790A 2014-03-20 2014-03-20 半導体装置及び命令読み出し制御方法 Active JP6250447B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014057790A JP6250447B2 (ja) 2014-03-20 2014-03-20 半導体装置及び命令読み出し制御方法
US14/656,984 US9477594B2 (en) 2014-03-20 2015-03-13 Semiconductor device and control method for reading instructions
CN201510121696.8A CN104932876B (zh) 2014-03-20 2015-03-19 半导体装置及读取指令的控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014057790A JP6250447B2 (ja) 2014-03-20 2014-03-20 半導体装置及び命令読み出し制御方法

Publications (2)

Publication Number Publication Date
JP2015184706A JP2015184706A (ja) 2015-10-22
JP6250447B2 true JP6250447B2 (ja) 2017-12-20

Family

ID=54120053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014057790A Active JP6250447B2 (ja) 2014-03-20 2014-03-20 半導体装置及び命令読み出し制御方法

Country Status (3)

Country Link
US (1) US9477594B2 (ja)
JP (1) JP6250447B2 (ja)
CN (1) CN104932876B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106681877B (zh) * 2015-11-11 2020-02-04 扬智科技股份有限公司 芯片调试系统及方法与系统芯片
CN109284176B (zh) * 2017-07-20 2020-11-03 龙芯中科技术有限公司 中断响应方法、装置及计算机可读存储介质
US11461101B2 (en) * 2019-09-27 2022-10-04 Arm Technology (China) Co. LTD Circuitry and method for selectively controlling prefetching of program instructions
CN111694594B (zh) * 2020-05-18 2023-03-03 成都盛芯微科技有限公司 补丁程序的控制方法和系统
CN114970441B (zh) * 2022-06-06 2023-11-28 江苏泰治科技股份有限公司 Ic芯片封装自动布线方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132390A (ja) * 1998-10-23 2000-05-12 Toshiba Corp プロセッサ及び分岐予測器
JP3877518B2 (ja) * 2000-12-13 2007-02-07 松下電器産業株式会社 プロセッサの電力制御装置
US20030204675A1 (en) * 2002-04-29 2003-10-30 Dover Lance W. Method and system to retrieve information from a storage device
ITRM20030354A1 (it) * 2003-07-17 2005-01-18 Micron Technology Inc Unita' di controllo per dispositivo di memoria.
US20050034108A1 (en) * 2003-08-15 2005-02-10 Johnson Erik J. Processing instructions
US8010734B2 (en) * 2004-06-04 2011-08-30 Broadcom Corporation Method and system for reading instructions from NAND flash memory and writing them into SRAM for execution by a processing device
CN101558391B (zh) * 2006-12-15 2013-10-16 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器
KR100895429B1 (ko) * 2007-04-27 2009-05-07 중앙대학교 산학협력단 플래시 메모리 파일 장치 및 그 마운트 방법
US8122179B2 (en) * 2007-12-14 2012-02-21 Silicon Motion, Inc. Memory apparatus and method of evenly using the blocks of a flash memory
US20090271593A1 (en) * 2008-04-29 2009-10-29 Mediatek Inc. Patching device for patching rom code, method for patching rom code, and electronic device utilizing the same
US9348597B2 (en) * 2008-06-30 2016-05-24 Infineon Technologies Ag Device and method for bypassing a first program code portion with a replacement program code portion
JP4354001B1 (ja) * 2008-07-03 2009-10-28 Necエレクトロニクス株式会社 メモリ制御回路および集積回路
JP5035227B2 (ja) 2008-12-17 2012-09-26 日本電気株式会社 情報処理装置、プログラムの起動制御方法、及び起動制御プログラム
ITMI20120944A1 (it) * 2012-05-31 2013-12-01 St Microelectronics Srl Unità di controllo di circuiti di alimentazione per uno o più punti di carico di un sistema elettronico con nvm esterna di personalizzazione

Also Published As

Publication number Publication date
US9477594B2 (en) 2016-10-25
JP2015184706A (ja) 2015-10-22
CN104932876A (zh) 2015-09-23
CN104932876B (zh) 2019-06-07
US20150269072A1 (en) 2015-09-24

Similar Documents

Publication Publication Date Title
JP6250447B2 (ja) 半導体装置及び命令読み出し制御方法
US7590774B2 (en) Method and system for efficient context swapping
US20190361708A1 (en) Embedded scheduling of hardware resources for hardware acceleration
US20150363239A1 (en) Dynamic task scheduling method for dispatching sub-tasks to computing devices of heterogeneous computing system and related computer readable medium
JP6633119B2 (ja) 自律的メモリの方法及びシステム
JP2020173870A (ja) 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構
CN103605568A (zh) 一种多线程管理方法及装置
WO2007140428A2 (en) Multi-threaded processor with deferred thread output control
EP2171576A1 (en) Scheduling threads in a processor
US20210382721A1 (en) Central processor-coprocessor synchronization
US20170262291A1 (en) Heterogeneous computing system with a shared computing unit and separate memory controls
US20150268985A1 (en) Low Latency Data Delivery
US9477484B2 (en) System and method for boot acceleration of a data processing system wherein a nonvolatile memory is pre-configured before boot time
US8122167B1 (en) Polling in a virtualized information handling system
US20140089646A1 (en) Processor with interruptable instruction execution
US9946665B2 (en) Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU)
JP2010140239A (ja) 割り込みレイテンシーを短縮する装置及び方法
KR102158877B1 (ko) 그래픽 프로세싱 유닛 상에서 작업을 프로세싱하기 위한 시스템 및 방법
JP4631442B2 (ja) プロセッサ
US10394574B2 (en) Apparatuses for enqueuing kernels on a device-side
JP2005276104A (ja) マイクロコンピュータ
US20240176616A1 (en) Processor and method of controlling processor
JP6138482B2 (ja) 組み込みシステム
CN109313558B (zh) 用于运行计算单元的方法
CN114968361A (zh) 存储有程序的机器可读介质、计算机系统和一种操作方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171122

R150 Certificate of patent or registration of utility model

Ref document number: 6250447

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250