JP3710465B2 - 記憶装置におけるアドレス指定のための中央処理装置の制御方法および制御装置 - Google Patents

記憶装置におけるアドレス指定のための中央処理装置の制御方法および制御装置 Download PDF

Info

Publication number
JP3710465B2
JP3710465B2 JP2003514409A JP2003514409A JP3710465B2 JP 3710465 B2 JP3710465 B2 JP 3710465B2 JP 2003514409 A JP2003514409 A JP 2003514409A JP 2003514409 A JP2003514409 A JP 2003514409A JP 3710465 B2 JP3710465 B2 JP 3710465B2
Authority
JP
Japan
Prior art keywords
address
processing unit
central processing
instruction code
instruction
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.)
Expired - Fee Related
Application number
JP2003514409A
Other languages
English (en)
Other versions
JP2004535642A (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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of JP2004535642A publication Critical patent/JP2004535642A/ja
Application granted granted Critical
Publication of JP3710465B2 publication Critical patent/JP3710465B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Programmable Controllers (AREA)
  • Stored Programmes (AREA)
  • Channel Selection Circuits, Automatic Tuning Circuits (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Executing Machine-Instructions (AREA)

Description

発明の詳細な説明
本発明は、例えばASIC(application specific integrated circuit;特定用途向け集積回路)やSOC(system on chip;1チップシステム)などに使用されている、例えばマイクロ制御装置やマイクロプロセッサなどの制御装置に関するものである。本発明は、特に、CPU(central processing unit;中央処理装置)アーキテクチャを基礎とし、要求された記憶容量(Speichergroesse)のアドレス指定(Adressierung)を支援していない制御装置に関するものである。
マイクロプロセッサおよびマイクロ制御装置の開発により、性能がかなり向上したにもかかわらず、特定の技術分野、例えばチップカード分野、または、SOC設計などの適用分野では、CPUを集積回路に集積する場合、新しいアーキテクチャよりも古いCPUアーキテクチャが好まれている。その理由は、高性能の新しいCPUアーキテクチャは、大抵の場合、それぞれ提供される適用分野にとってサイズが大きすぎて、その結果、タスク(Aufgaben)を実行することに関していえば、必要な電力が多すぎるし、チップに占める面積も大きすぎるからである。新しいより強力なCPUアーキテクチャよりも古いCPUアーキテクチャが好まれるほかの理由は、例えば8051、または、8052ベースのマイクロ制御装置アーキテクチャのような古いCPUアーキテクチャのためのソフトウェア開発環境の方が優勢であり、大抵の場合、顧客にもより好まれているからである。また、古いCPUアーキテクチャのためのソフトウェア開発者の方がより多くいるからである。
顧客により好まれている、古い制御装置アーキテクチャ用のソフトウェア開発環境の問題は、チップカード分野において特に重要なものである。なぜなら、この分野では、チップカード上で処理できる機械プログラム、および、実行可能な機械コードの生成は、チップ製造者の責任(Aufgabengebiet)ではなく、安全性の理由から、主要顧客、例えば銀行およびそのソフトウェア開発会社、および、各基本ソフトウェア開発会社の責任であるからである。さらに、必要な数が多いので、チップカード利用者にとっては、経費をできるだけ安く抑えるために、各要件に応じたチップカード制御装置を使用することが非常に重要である。従って、チップカード製造者は、ローエンドチップカード分野の要件を満たし、公知のソフトウェア開発環境を望む顧客の要望を満たすために、古いマイクロ制御装置アーキテクチャを基礎とするチップカードを提供できなければならない。
しかしながら、チップカードの製造において古い制御装置アーキテクチャを使用する場合の問題は、そのアドレス指定方法(Adressierungsmoeglichkeiten)が十分ではないことである。従って、チップカード分野では、8051ベースのCPUの性能は、基本的に、チップカードの管理タスク(Verwaltungsaufgaben)には十分であるが、高い安全性が求められるので、チップカード上で、暗号コプロセッサによって、暗号アルゴリズムを処理する必要がある。なお、この暗号アルゴリズムは、非常に大きなサイズのオペランド(Operanden)に関する演算(Rechenoperationen)を含むものである。公知のRSA(Rivest, SharmirおよびAdleman)アルゴリズムでは、例えば1024ビットのオペランド長(Operandenlaengen)が一般的である。このように処理するオペランド長が長く、暗号アルゴリズム自体も複雑なので、チップカードでは、できるだけ大きな記憶装置にアクセスする(Zugriff)必要である。さて、古い制御装置アーキテクチャを基礎とするCPUを用いる場合に問題となるのは、そのCPUがメモリのアドレス指定を小容量しかできない点である。例えば8051ベースのCPUは、64kバイトのアドレス指定しかできない。
古いアーキテクチャの制御装置を使用しても、大容量記憶装置(grossen Speicher)をアドレスする(adressierbar)ために利用できる解決策(Loesungsansatz)は、外部に蓄積された記述子(Deskriptoren)、または、CPUによってアドレスされるメモリ窓(Speicherfensters)の位置(Lage)を決定するベースアドレス(Basisadressen)を使用することである。その結果、CPUによってアドレス可能な(adressierbar)メモリ領域(Speicherbereich)を、メモリ窓を用いることで、より大きなメモリの全域に広げることができる。図4は、8ビット制御装置のブロック図を示す。この8ビット制御装置を、概して800で示す。また、この8ビット制御装置は、8051ベースのCPU805と、MMU(memory management unit;メモリ管理装置)と、制御装置800に接続されている記憶装置815とを含んでいる。この記憶装置815は、例えば読み出し専用メモリ(Nur-Lese-Speicher (ROM))、ランダムアクセスメモリ(Direktzugriffsspeicher (RAM))、EEPROMまたはフラッシュメモリなどの不揮発性メモリ(NVM;non-volatile memory)などのように様々なタイプのメモリを含んでいてもよい。また、分かりやすいように1ブロックだけを記載した。CPU805は、8ビットアドレスバス820と、双方向8ビットデータバス825とを介して、MMU810に接続されている。MMU810は、同じく、12ビットアドレスバス840と、双方向8ビットデータバス845とを介して、記憶装置815に接続されている。チップカードの場合、制御装置800は、例えばさらに他の素子とも接続されている。他の素子とは、暗号アルゴリズムを処理する暗号コプロセッサ、割り込みモジュール(Interruptmodul)、端末と通信するための接触型または非接触型インターフェース、乱数発生器、および、他の素子である。これらは、図4には簡易化のため記載していない。
図4の制御装置800の問題は、CPU805が、8ビットアーキテクチャを基礎としていることであり、命令セット(Befehlssatzes)855の領域(im Rahmen)では、チップカードの場合、記憶装置815の容量(Groesse)はより大きくなくてはならないにもかかわらず、64kバイトしかアドレス指定できない点である。図4の例では、例えば、1メガバイトである。CPU805が、64kバイトしかアドレスできない理由は、命令セット855および、特に、読み出し/書き込み命令(例えば、MOV命令)によるデータアクセス時、および、アドレスを生成するためのコードアクセス時に、2バイト(16ビット)しか使用しないからである。2バイト(16ビット)だと、216=64k通り(216=64k Zustaenden)しかコード化できない。
読み出し命令を実行するとき、CPU805は、8ビットアドレスバス820と8ビットデータバス825を介して16ビットのアドレスを出力する。CPU805は、データバス825からの応答(Antwort)として、指定したアドレスにある記憶装置815のメモリの内容を待っている。1MBの記憶装置815をアドレス指定できるように、CPU805の外側にあるMMU810に、ベースアドレスを示すデータ記述子860が蓄積されている。このベースアドレスを、CPU805からの16ビットアドレスに加える。その後、その結果を、12ビットアドレスバス840と、8ビットデータバス845とを介して出力する。これは、記憶装置815をアドレス指定するためである。このようにして、記述子860が、記憶装置815にある64kのデータメモリ窓865を定義する。このデータメモリ窓865の開始アドレス(Startadresse)は、記述子860が示すベースアドレスに対応している。記述子860とMMU810とを備えることにより、CPU805が記憶装置815にメモリアクセスするときは、必ず、メモリ窓865にアクセスするようになる。この場合、CPU805が出力するアドレスは、メモリ窓865内で読み出されるバイトの相対番地(オフセット)を表している。CPU805が、書き込みまたは読み出し命令を実行するとき、MMU810は、CPU805からの16ビットアドレスを、20ビットの物理アドレスに変換し、それに対応してアクセス先を変更する。
この記述子860の概念は、MMU810と関連して任意の記憶容量に拡張できるが、不利なのは、メモリ窓865の外側にある記憶装置815のアドレスにメモリアクセスする場合、まずMMU810を再構成しておく(umkonfiguriert)必要があるという点、すなわち、記述子860をその都度設定しなおす(neu eingestellt)必要があるという点である。従って、MMU810のこの再構成は、特に複雑である。なぜなら、再構成するには、記述子860をソフトウェアにより設定する必要があるからであり、常にCPU805の管理下にある(sichtbaren)(つまり、アドレス指定可能な)メモリ領域(Speicher)に、管理コード870を蓄積する必要があるからである。なお、この管理コード870は、記述子860を設定するためのMMU設定コードを含んでおり、もともとたいてい非常に小さい直接アドレス指定可能なメモリ領域を減少させてしまう。さらに、記述子860を設定するには、さらにクロックサイクル(zusaetzliche Taktzyklen)が必要である。これは、制御装置の処理速度が遅くなる原因となる。上記の記憶容量について考えると、メモリ窓865の外側にある、記憶装置815のメモリ領域にデータアクセスするのにかかる時間は、プログラムのコンパイルが必要なために、該メモリ窓865内にメモリアクセスするのにかかる4クロックサイクルと比較して、例えば140クロックサイクルである。
MMU再構成は、コードアクセスにおいてはより重大な問題となる。コードアクセスの場合も、同じように、コード記述子875は、コードメモリ窓880を定義する。そこでは、副プログラム(Unterprogrammen)実行、つまり、メモリ窓880の外側のメモリ領域にある命令を呼び出す場合、現在設定されているメモリ窓880へ必ず戻らなければならない。つまり、通常の連続した命令において機械コードを処理するとき、すなわち、ジャンプ命令がない場合、または、データアクセスのように復帰を意図しないジャンプ命令のときに、現在設定されているメモリ窓880を離れる場合は、コード記述子875だけを再設定しなければならない。また一方で、復帰のためのジャンプ命令の場合は、復帰ジャンプをするときに、必ずコード記述子875をもとの値に設定しなければならない。これを確実にするために、管理コード870は、さらに、その元のコードを含んでいなければならない。この元のコードは、復帰のためのジャンプ命令のたびに、現在設定されているコードメモリ窓880の外側にある宛先(Zieles)に関連付けて、呼び出される。これは、復帰ジャンプのときに、ジャンプ前の記述子の設定の復元を確実にするためである。
ソフトウェアによる実現は、記憶装置815の各バンク、つまり、各々の可能なメモリ窓の位置に以下のものを提供することにより可能である。すなわち、元のコード、および、設定・再設定コード(Einstellungs-und Rueckstellungscode)である。これらのコードは1つの表に整理されおり、常に管理可能な記憶装置815のメモリ領域に蓄積されている。現在設定されているメモリ窓865の境界を越えて、復帰のためのジャンプ命令を実行するためには、例えばデータポインタ(DPTR)のような内部レジスタ885に、宛先バンク、つまり、宛先バンク内の相対番地、そこにはジャンプ先の命令があるのであるが、それと関連づけられた宛先コードの16ビットアドレスをロードし、次に復帰を意図しないジャンプ命令を有した元のコードを常に管理可能なメモリ領域に呼び出して、プログラムコードから常に管理可能なメモリ領域にある機能の場所へ戻るためのジャンプ命令が実行されなければならない。元のコードを実行することにより、現在設定されている窓880、または、現在のバンクを復旧するために、MMU再設定コードのアドレスがスタック(Stack)またはスタックメモリ(Stapelspeicher)890へシフトする。次に、予め内部レジスタ885に書き込まれたアドレスがスタック890へシフトする。そして、最後に、新しい宛先MMUバンクのためのMMU設定コードが、復帰を意図しないジャンプ命令によって呼び出される。MMU再構成が実行されたのち、設定コード(Einstellungscodes)の最後で、新しく設定されたメモリ窓にある所望の機能、または所望の副プログラムへのジャンプが実行される。機能が処理された後、元のMMU構成を復元するため、または、もともと設定されているメモリ窓880を回復するためのMMU再設定コードが元のMMU設定を回復するための復帰命令によって呼び出される。従って、再設定コードの終わりにある復帰ジャンプ命令は、新しく設定されたメモリ窓885内で、プログラムコード内の対応の後続位置(Folgestelle)へジャンプする。MMU設定コードまたは再設定コードに含まれるCPU命令を用いて、MMU810を再設定できるように、特別な命令が備えられていてもよいか、あるいは、MMU810が、アドレスバス820およびデータバス825を介してCPU805から来る専用の8ビットアドレス(reservierte 8 Bit-Adressen)に応答する。CPU805は、上記特別な命令を使用して、MMU810および記述子860,875をアドレス指定できる。
CPU805が常にアドレス指定できる、または、管理できるメモリ領域を、記憶装置815内に実現するため、CPU805が出力する全ての16ビットアドレスを、MMU810によって、メモリ窓865に対応付けるのではなく、記憶装置815のある固定メモリ領域(festen Speicherbereich)に対応付けている。その結果、効果的にアドレス可能なメモリ窓865のサイズが、管理コード870によって小さくなる。
本発明の目的は、記憶装置をアドレス指定するための中央処理装置の制御方法、および、制御装置を提供することであり、その結果、そのアーキテクチャにより、CPUによってアドレス指定され得る最大限の記憶領域まで広げてアドレス指定することが複雑ではなくなる。
本目的は、請求項1または9に記載の方法、および、請求項2または10に記載の制御装置によって達成される。
本発明は、CPUの自由なCPU命令コード(CPU-Operationscodes)、または、CPU命令コード識別子(CPU-Operationscodeidentifikatoren)を、CPUの上流に接続されている支援手段(Unterstuetzungseinrichtung)を制御するため使用できるという認識に基づいている。なお、自由なCPU命令コードとは、すなわち、CPUの命令セットの命令がまだ割り当てられていない、以下で自由命令コードと呼ばれる命令コードのことである。また、上記CPU命令コード識別子は、既に1つの命令が割り当てられているが、他の理由で使用できるか、あるいは、特定のオペランドに関しては自由である。上記支援手段は、特別な命令コード識別子として一般的に示されるこの命令コード識別子に応じて(ansprechend)、第2メモリサイズを有する第2メモリ領域に関して新しい、例えば物理アドレスを生成できる。この第2メモリサイズは、CPUがアドレス指定できる、例えば論理的なメモリサイズよりも大きい。その結果、特別な命令コード識別子を用いて、実行可能な機械コードの手順で、支援手段をアドレス指定することができる。この支援手段は、処理するべき命令コード識別子をCPUへ供給する時の、記憶装置からCPUへのデータ通信(Datenverkehr)を監視し(ueberwacht)、特定の特別な命令コード識別子が生じる場合に、新しく生成されたアドレスに関する処置を行なうことができる。このようにして、一方では、CPUの複雑な再設計(Redesign)、および、他方では、実行可能な機械コードと、処理速度との両方において現在のメモリ窓をソフトウェアによる複雑な再設定が回避される。
プログラムジャンプに関する本発明の特徴では、支援手段が、CPUへ命令コード識別子を供給できる。この命令コード識別子は、CPUの命令セットからのジャンプ命令に割り当てられている。ジャンプ命令命令コード識別子は、第1、例えば論理メモリ領域に関する適切な宛先アドレスを含んでいる。これはプログラムカウンタを、適切に設定するためである。支援手段は、同時に、MMUの記述子を管理する。この記述子は、メモリ領域内の第1メモリ領域の位置を表している。あるいは、この記述子は、宛先アドレスが、コード記述子と共に、新しいアドレスを生成するように設定されている。CPUへ供給されたジャンプ命令は、第1メモリ領域に関連して宛先アドレスに関連付けられている。支援手段は、ジャンプ命令が関連付けられている宛先アドレスおよびコード記述子を、以下のように設定する。すなわち、新しいアドレスが、第1、例えば論理メモリ領域に存在し、これに伴って、CPUに供給されるジャンプ命令が参照する宛先アドレスが、記述子と関連して新しい、例えば物理アドレスに対応するように、宛先アドレスおよびコード記述子を設定する。このようにして、支援手段は、特別な命令コード識別子のみに応じて、次に処理するべき命令コード識別子を記憶装置に要求するために、一方では、記述子、および他方では、CPUの次のコードアクセスのためのプログラムカウンタが、適切に設定されていることを確実にする。このため、説明の冒頭(Beschreibungseinleitung)に記載したソフトウェアによる解決策の場合には、管理コードが必要であった。
データアクセス命令における発明の他の特徴では、支援手段が、CPUにあらかじめ定義されたCPU命令コードを供給できる。これは、CPUを、適切に「起動(stimulieren)」、または、適切な状態にし、CPUが記憶装置へ出力したアドレスを、新しく生成されたアドレスに基づいて操作するためである。その結果、記憶装置から判断すると、結果的にCPUが第2メモリ領域をアドレス指定できるかのような印象(Eindruck)が生じる。プログラム実行中に、設定されたメモリ窓、または、第1メモリ領域の外側のメモリ領域の特定アドレスにある内容、つまり、第2メモリ領域に関する内容が読み出される場合、このために供給された自由命令コードは、例えば処理可能な機械コードに挿入してもよい。上記コードを、CPUが、次に処理されるべき命令として記憶装置に要求する場合、例えば命令コード自体の一部から、または、CPU内のレジスタ情報から、または、CPU外部のレジスタ情報、例えば支援手段内から新しいアドレスを決定するために、支援手段が応答する。このアドレスのメモリが読み出される。さらに、CPUに、1つまたは複数のCPU命令コードが供給される。これは、CPUが、続いて供給されるメモリ内容を、CPU内の指定された宛先レジスタ(Zielregister)に書き込むためである。さらに、次に実行されるべき記憶装置内の命令コードを表示するためのプログラムカウンタが適切に設定される。その結果、新しいアドレスによって記憶装置にアクセスでき、新しいアドレスのメモリ内容が読み出し可能となり、このメモリ内容はCPUへ出力可能となる。従って、データアクセスのときも、第1メモリ領域または事前に設定されたメモリ窓をシフト(退避)するための管理コードは不要である。
CPUの外側に新アドレスを生成する支援手段を制御するために、自由命令コードまたは特別命令コード識別子を使用することによって、CPUの仕組みに本質的な変化を加えなくても、CPU命令コード識別子を有するCPUが直接アドレス指定できるメモリ領域を越えるメモリ全体を、直接アドレス指定できることが好ましい。支援手段が、CPUの上流に接続されていることによって、すなわち、メモリからCPUへのデータ通信を監視できるようにCPUと接続されていることによって、例えばCPUの命令セットからの命令を割り当てられていない自由命令コード識別子を、この命令コード識別子がCPUに達する前に、支援手段によって遮断することができる。支援手段によって生成される、自由命令コードが参照する新しいアドレスに基づいて、支援手段は、CPUを、適切に起動または制御でき、場合によっては、CPUのアドレス信号を、外側へ、つまり、記憶装置に対して、適切に操作できる。記述子またはベースアドレスの準備されたソフトウェアによる再設定は不要である。その結果、一方では、管理コードが省かれ、他方では、コードジャンプ(Codesprung)または現在設定されているメモリ窓からのデータアクセスにかかるクロックサイクル数が減少する。さらに、管理コードを省くことによって、常にCPUがアドレス指定可能な、または、管理可能なメモリ領域においてメモリスペース(Speicherplatz)を専有することがなくなる。
本発明の他の長所は、CPU命令コード識別子のみを基礎とする機械コードに対して、下位互換性(Abwaertskompatibilitaet)を保証できる点である。なぜなら、支援手段は、CPU命令コード識別子にとって、見えなくても(durchlaessig)、または、気付かれなくても(unmerklich)よいからである。さらに、支援手段は、現在設定されているメモリ窓の外側に存在するアドレスに関してデータアクセス時およびジャンプ命令の際にコード記述子またはデータ記述子を再設定するために備えられていてもよい。その結果、一つの自由または特別命令コード識別子のみによって、メモリ窓を再設定できる。CPUの外側の自由または特別命令コード識別子をハードウエアで処理することによって、さらに、例えば記述子の再設定時の割り込みを回避できる。その結果、ソフトウェアによる再設定と比べて、その受ける影響は軽減される。
本発明の好ましい実施例を、以下に、添付の図を参照しながら詳しく説明する。
図1は、本発明の実施例の制御装置のブロック図である。図2aおよび図2bは、自由命令コードが、間接アドレス指定方式による読み出し命令に対応する場合に、図1の制御装置が実施するステップを示すフローチャートである。図3は、自由命令コードが、復帰を意図する直接アドレス指定方式によるジャンプ命令に対応する場合に、図1の制御装置が実施するステップを示すフローチャートである。図4は、CPUのアドレス指定の可能性を拡張するために従来の可能な解決策を使用している制御装置のブロック図である。
以下の本発明の実施例の詳しい説明では、本発明は、チップカードの制御装置に関するものである。ただし、本発明を、他の適用分野(例えば、ASIC、SOC、または、TPM(trusted plattform module;セキュリティプラットフォームモジュール)など)の制御装置に使用してもよいし、または、個々のマイクロ制御素子として実施してもよい。
さらに、以下の実施例は、自由な、専用ではない自由命令コードにのみ基づいている。この自由命令コードには、CPUの命令セットの命令は割り当てられていない。しかし、支援手段を制御するための他の実施形態では、命令コード識別子の形をとって専用の命令コードを使用することも同じく可能である。この命令コード識別子は、様々な理由から、支援手段に適したものである。この場合、命令コード識別子の式(Ausdruck)は、後ろの方に命令コードと任意のオペランド(例えば、アドレス部)との組み合わせを含んでいるほうがよい。その一例は、特定の命令がコンパイラ(Compiler)によって支持、および、使用されておらず、従って、コンパイラの命令コードを、他の方法で使用できる場合、または、特定のオペランドに関連する命令コードが自由である、つまり、規定されていない場合である。
さらに、以下の説明は、サイズ1MBの記憶装置に関するものである。この記憶装置は、20ビットでアドレス指定される。ただし、他のメモリサイズ(例えば14MB、および、アドレス指定用の他のビット数(例えば24)など)も可能である。
図1は、本発明の実施例では概して10で示すマイクロ制御装置と、記憶装置20とを示す。制御装置10は、CPU30と、支援手段40と、MMUすなわちメモリ管理ユニット50とを備えている。CPU30は、8051制御装置キテクチャを基礎としており、双方向8ビットデータバス70と、8ビットアドレスバス86と、割り込みバスInt90とを介して、支援手段40に接続されている。支援手段40は、双方向8ビットデータバス100と、8ビットアドレスバス120と、割り込み線Int130とを介して、MMU50に接続されている。支援手段40とMMU50との双方は、8ビットデータバス140,150と、12ビットアドレスバス180,190とを介して、記憶装置20に接続されている。
CPU30は、加算器などの図示していない他の素子の他に、デコーダ210、内部RAM IRAM220、内部レジスタを備え、これらに、スタックポインタ(Stackzeiger)すなわちスタックメモリポインタ230、プログラムカウンタ240、データポインタレジスタDPTR245、および、アキュムレータ250が含まれる。他の内部レジスタ260は、IRAM220に備えられている。さらに、IRAM220には、スタックメモリすなわちスタック270がさらに備えられている。デコーダ210は、8ビットデータバス70を介してCPU30に供給される命令コードまたは命令コード識別子280をデコードする。この場合、各CPU命令コードまたは命令コード識別子280には、CPU30の命令セット290からの命令が割り当てられている。
支援手段40は、同じく、8ビットデータバス140を介して記憶装置20から支援手段40に供給された命令コードまたは命令コード識別子をデコードするために、デコーダ300を備えている。支援手段40は、特定の命令コード310に応答する。この命令コード310は、CPU命令コード280に属しておらず、または、CPU命令コード280のための専用命令コードではない。従って、この命令コード310には、CPU30の命令セット290からの命令は割り当てられていない。この命令コードを、以下では、自由命令コード310と呼ぶ。デコーダ300の他に、支援手段40は、さらに、加算器320を備えている。これは、以下で説明するように、支援手段40で生成される20ビットアドレス、および、外部の3バイトのサイズのデータポインタレジスタXDPTR325を、相対値(例えば、4または16ビット)分だけ補正するためである。
MMU50は、データ記述子330と、コード記述子340と、任意で割り込み記述子(Interruptdeskriptors)350を蓄積するための外部レジスタを備えている。
上記素子の他に、CPU30、支援手段40およびMMU50は、それぞれ、制御装置(図示せず)を備えており、この制御装置が、以下に説明するタスクの制御を行なう。
さらに、チップカード制御装置10は、他の素子(分かり易くするため、図1には図示せず)と接続されていてもよい。他の素子の例としては、例えば暗号化アルゴリズムを実行するための1つ以上の暗号コプロセッサ、UARTモジュール(universal asynchronous receiver-transmitter = 万能非同期受信送信機)などの送受信インターフェース、内部クロックを生成するための発振器、割り込み信号をハードウエアによって生成するための割り込みモジュール、および、乱数発生器があげられ、これらは、アドレスデータバス(Adress-Daten-Bus)を介して、制御装置10と、例えば特に支援手段40とに接続されている。
本発明の場合、CPU30が含む命令コード識別子のセットは、CPU命令コード識別子280と自由命令コード識別子310とを含むものである。各命令コード識別子は、一般的に、命令コードを含んでいる。この命令コードは、命令の種類(Befehlsart)、すなわち、CPU30または支援手段40どちらかの処理手順を示している。また、各命令コード識別子は、場合によっては、他の情報を含んでいる。他の情報とは、例えば、命令コードに割り当てられている命令が参照するアドレスを示すためのアドレス部、および/または、命令が参照するオペランド(例えば、アドレス部に示されたアドレスに関する相対値、または、加算命令のための加数)を示すためのオペランド部のことである。従って、命令コードの合計数、すなわち、命令コード識別子の合計数は、命令コードのための可能なコード化方法の数によって制限されている。
アドレスバス86およびデータバス70の数を制限することにより、命令セット290は、CPU30が、メモリサイズが制限されている(すなわち、バイト毎のアクセスの場合、64kバイトの)メモリ領域にアクセスするのを許可するのみである。コードアクセスの場合でさえ、アドレス指定は、64kバイトに制限されている。なお、コードアクセスの場合に、CPU30は、次に処理する命令コード識別子を、プログラムカウンタ240に蓄積されている16ビットコードアドレスを用いて要求する。
本実施例では、記憶装置20のサイズが、例えば1メガバイトであるほうがよい。しかし、この場合、他のメモリサイズも可能である。記憶装置20は、この場合、例えばRAM、ROM、NVM(例えば、EEPROMまたはフラッシュメモリ)などのいろんなタイプのメモリを含んでいてもよい。命令セット290を用いるデータアクセス時に、または、コード要求時に、CPU30による全物理的記憶装置20のアドレス指定を許可するために、MMU50にデータ記述子330とコード記述子340とが備えられている。これらは、ベースアドレスまたは記憶装置20内にあるコード窓領域370およびデータ窓領域380の位置を決定する。これら領域は、それぞれ64kバイトであり、論理メモリ領域を決定する。この論理的なメモリ領域を、命令セット290を用いたデータアクセス、または、プログラムカウンタ240を用いたCPU30のコードアクセスが参照する。
記述子330,340を用いるメモリアクセスの原則を、まず、命令セット290からの読み出し命令の例を用いて説明する。この命令セット290は、アキュムレータ250にアドレスのメモリ内容を書き込むために備えられているものである。また、このアドレスは、データポインタレジスタDPTRなどの内部レジスタ260の2バイトで決定される。すなわち、一般的には、例として、命令「MOVX A,@DPTR」と表示(Notation)される。ただし、次に説明する実施例は、以下のものと同じように、現在要求されている命令が、ジャンプ命令にすぐ続き、CPU30が、現在の命令を要求するために、プログラムカウンタにおいて要求されるアドレスを出力するという手順(Szenarien)も参照している。現在要求される命令がジャンプ命令に直接すぐ続かない他の手順では、後続アドレス(Nachfolgeadresse)を、記憶装置20において、自動加算器(Autoinkrementers)の形で管理できる。この自動加算器は、自動的に20ビットコードアドレスを増加し、このアドレスにおいて、CPU30は、要求信号または起動信号を、記憶装置20へ出力するのみである。
CPU30は、プログラムカウンタ240に蓄積されている16ビットアドレスを、アドレスバス86、および、データバス70を介して出力することにより、命令を要求する。支援手段40は、このアドレス信号を変更せずに、アドレスバス120およびデータバス100へ通す。MMU50は、16ビットコードアドレスを示すアドレス信号を、コード記述子340に基づいて操作する。コード記述子340は、例えば、16ビットコードアドレスの前の上位4ビットを含んでいる。その結果、16個のメモリ窓の場所(Speicherfensterpositionen)が可能となる。これらの場所を、以下では、バンクとも呼ぶ。あるいは、しかし、コード記述子340は、16ビットコードアドレスの前の上位4ビットの他に、他のビットを含んでいる。これにより、16個以上の可能なメモリ窓の場所が可能となる。MMU50は、生じた20ビットコードアドレスを、記憶装置20へ出力する。これは、機械コード、すなわち、この場合は、「MOVX A,@DPTR」を要求するためである。記憶装置20は、コードメモリ窓370から、CPU命令コード識別子280を、データバス150,100および6070を介して、CPU30へ出力する。この場合、MMU50または支援手段40は、CPU命令コード識別子を通す。デコーダ210は、命令MOVX A,@DPTRの命令コード識別子280をデコードし、データバスおよびアドレスバス70,86を通過するデコードされた命令に応じて、データポインタの内容を出力する。これは、データメモリ窓380にある対応のメモリ内容にアクセスするためである。支援手段40を通過することにより、データポインタの16ビットアドレスは、MMU50に達する。このMMU50は、データ記述子330によって、上記16ビットアドレスから対応する20ビットアドレスを生成し、このアドレスを、アドレスバスおよびデータバス190,150を介して、記憶装置20へ出力する。記憶装置20は、対応するメモリ内容を、データバス150,100および70を介してCPU30へ返送する。CPU30では、命令MOVX A,@DPTRの命令コードによって決定されるように、CPU30によって上記メモリ内容が、アキュムレータ250にロードされる。
ジャンプ命令、または、コードメモリ窓370またはデータメモリ窓380の境界を越えたデータアクセス以前の記述子330,340のソフトウェアによる(softwaretechnische)複雑な再構成、または、再設定(Neueinstellung)を回避するため、既述のように、支援手段40は、記憶装置20からCPU30へのデータ通信を監視できるように、CPU30と接続されている。これは、記憶装置20のコードメモリ窓370が自由命令コード310を要求する場合、CPU30よりも前に、自由命令コード310へ応答できるためである。以下に説明するように、支援手段40を配置することにより、十分に大きなアドレス(すなわち、20ビットアドレス)の生成を、支援手段40において実現できるということが保証される。一方、CPU30は、支援手段40によって適切に「起動」される。さらに、支援手段40は、CPU30から記憶装置20へのデータ通信を監視できるように、CPU30と接続されている。これは、記憶装置20に関するアドレス指定を行なうためにMMU50が出力するアドレス信号を、操作するためである。
図2を参照しながら、以下に、図1の制御装置が行なうステップの順序を説明する。この順序は、CPUが要求する、ジャンプ命令のすぐ後に続いて実行される命令コード識別子が、CPUの内部宛先レジスタと、CPU30の内部レジスタにおける間接アドレス指定方式によって示される20ビットソースアドレス(20-Bit-Quelladresse)とを参照する読み出しまたは書き込み命令に対応する自由命令コード識別子である場合に、図1の制御装置が行なうものである。
ステップ400では、まず、アドレス生成に関する新しい読み出し命令で参照するためのレジスタをロードするように、実行中のプログラムによってCPU30を制御する必要がある。これは、新しい読み出し命令が関連している20ビットアドレスを共に生成するためである。図2に記載の実施例では、これらは、CPUの内部レジスタR1,R2およびR3である。これら内部レジスタを満たすために、以下の一連のCPU命令コード識別子(CPU Operationscodeidentifikator-Folge)が、例えば、記憶装置20にある自由命令コード識別子の前に存在していてもよい:「MOVX A,@Dptr」、「MOV R2,A」、「MOV R3,#0x13H」。Ri(ただし、i=1...3)は、内部レジスタRi、Aは、アキュムレータ250、Dptrは、データポインタ245、および#0x13Hは、16進数で表された直接アドレスを示している。
ステップ405では、CPU30が、アドレスバスおよびデータバス86,70を介してプログラムカウンタ240に蓄積されている16ビットコードアドレスを出力することにより、すぐ後に続いて実行する命令、この場合はすぐ後にジャンプする命令、を要求する。ステップ410では、プログラムカウンタ240の16ビットコードアドレスを、支援手段40が変更せずに送信した(passiert)後、MMU50は、コード記述子340を使用して、20ビットコードアドレスに対応付け(abgebildet)、または、この20ビットコードアドレスを操作し、記憶装置20へ送信する。プログラムカウンタに蓄積されている16ビットコードアドレスは、例えば、20ビットコードアドレスの下位部分に対応している。一方、コード記述子340は、20ビットアドレスの上位4ビットの部分、あるいは上位nビットの部分に対応している。この場合、例えば、12ビットなどである。16ビットコードアドレスを対応付け(Abbildung)または操作は、MMU50によって、16ビットコードアドレスを補足することにより実行される。あるいは、コード記述子340は、20ビットベースアドレスまたはバンクの初期アドレス対応することができる。そのため、記述子340を、16ビットコードアドレスに加算することにより対応付けを実行できる。
ステップ415では、コード記述子340および16ビットプログラムカウンタ240が生成した20ビットコードアドレスにある要求した命令の命令コード識別子が、記憶装置20から呼び出され(geholt)、アドレスバスおよびデータバス150,190および120を介して、干渉されないまま(ungehindert)MMU50から支援手段40へ送られる。
ステップ420では、支援手段40のデコーダ300によって、記憶装置20から受信した命令コード識別子が、命令コードが示すような自由命令コードかどうかをチェックする。ステップ420で、記憶装置から呼び出された命令コードが自由命令コードではないという結果が出れば、ステップ425で、支援手段40は、上記命令コードを、干渉せずに通過させ、アドレスバスおよびデータバス70,86を介して、CPU30へ転送する。次に、CPU30は、CPU命令コード識別子を、従来の方法でデコードし、実行する。しかし、記憶装置20からの命令コードが、自由命令コードであれば、ステップ430で、命令コードをデコードする。これは、どの自由命令コード310が、命令コードであるかを決定するためである。
すでに説明したように、図2の場合、命令コードは、自由命令コードであり、この自由命令コードは、間接アドレス指定方式による読み出し命令に対応している。ステップ435では、支援手段40が、CPU30の内部レジスタR1〜R3の内容を決定する。決定は、様々な方法で行える。実施例では、支援手段40が、制御542を介してCPU30と接続されている。この制御542により、支援手段40は、レジスタR1〜R3の内容を問合せできる。例えばこれはトレースメカニズム(Trace-Mechanismus)の助けを借りて実行されうる。そのため、支援手段40は、制御542を介して、CPU30の内部バスと接続されている。この内部バスに、IRAM220が接続されており、この内部バスを介して、IRAM22にあるレジスタR1〜R3がロードされる。他の実施例では、支援手段40は、レジスタR1〜R3の内容を決定するために、CPU命令コード識別子を使用する。支援手段40は、このCPU命令コード識別子を、CPUへ供給する。これは、レジスタR1〜R3の内容をデータバス70へ出力するように、CPUを起動するためである。このとき、プログラムカウンタ240を適切に制御するために適切な予備措置(Vorkehrungen)を行なう。
ステップ440では、支援手段40が、決定された内容から20ビットアドレスを生成する。このアドレスに、自由命令コード識別子または読み出し命令が関連付けられている。
ステップ445では、あらかじめ定義されたCPU読み出し命令コード識別子を、自由命令コード識別子または自由命令コードに応じて、支援手段40によってCPU30へ供給する。上記コードにおいては、自由命令コードが、例えば、レジスタ内容から決定された20ビットアドレスにあるメモリ内容を、アキュムレータレジスタ(Akkumulatorregister)250へロードする読み出し命令に対応しているので、支援手段40は、CPUに、CPU命令コードを供給する。このCPU命令コードは、命令「MOVX A,@R1」、すなわち、使用されるレジスタによって示されるアドレスにあるメモリ内容を、レジスタAにロードするために備えられており、記憶装置20に関する読み出し命令に対応する。あらかじめ定義された命令コード識別子は、この場合、命令コードを含んでいるだけである。
ステップ450では、CPU30が、支援手段40から供給されるCPU命令コード識別子を受信し、これをデコードする。命令MOVXのために供給される命令コード識別子の実行の際に、CPU30は、CPU命令コード識別子に含まれる16ビットアドレスによってアドレスバスおよびデータバス70,86を制御する。このCPU命令コード識別子は、直接アドレス指定方式によって得られるか、あるいは、間接アドレス指定方式によって内部レジスタから決定される。そしてCPU30は、結果がデータバス70を介して提供されるのを待つ。これは、結果を、宛先レジスタ、すなわち、アキュムレータ250へ書き込むためである。
ステップ455では、支援手段40が、レジスタR2からR3から決定された20ビットアドレスに基づいて、CPU30のアドレス信号を操作し、記憶装置20の内容にアクセスするため、これを記憶装置20へ転送する。アドレス信号またはCPU30の16ビットアドレスの操作は、それぞれ、例えば、上記アドレス信号またはCPU30の16ビットアドレスを20ビットアドレス自体にそのまま置き換えること、欠落部(例えば20ビットアドレスのうちの上位4ビット)をCPU30の16ビットに加算または補足すること(このことは、ステップ430で行われていないこともある)、さらに、自由命令コード識別子の使用されていないビットを、相対値(Versatzwert)として結果に加算することを含んでいてもよい。
ステップ465では、さらに、アクセスされる20ビットアドレスのメモリ内容を、データバスおよびアドレスバス70,86,140,180、および、支援手段40を介して、CPU30へ供給する。ステップ470では、ステップ450において供給された、あらかじめ定義されたCPU読み出し命令コード識別子により適切に起動されている、またはあらかじめ定義された状態に置かれているCPU30は、供給されるメモリ内容を、宛先レジスタ、すなわち、アキュムレータ250へ、CPU読み出し命令コードによって定義されているようにロードする。最後に、CPU30は、ステップ475において、プログラムカウンタ240を、供給された、あらかじめ定義されたCPU読み出し命令コード識別子に対応するように適合させる。ただし、このステップをより早い段階で行ってもよい。
従って、ステップ475の後、プログラムカウンタ240は、コードメモリ窓370内で、次に処理する命令、または、通常の一連の命令に基づく命令コード識別子、および、アキュムレータ250内にあり、自由命令コード識別子が関連付けられている20ビットアドレスのメモリ内容を示している。現在設定されているデータメモリ窓380の位置に関係なく、MMU50またはデータ記述子330をソフトウェアによって再構成する必要はない。図1に記載の制御装置を実現する場合、図1のメモリアクセスは、図2によれば、命令セット290の読み出し命令を用いて、現在設定されているメモリ窓380内にメモリアクセスする場合と比べてもあと2クロックサイクル必要なだけである。
この実施例で自由命令コード識別子を実行した場合のアドレス指定は、CPU独自のレジスタを用いて間接アドレス指定方式により行われる。しかし、既存のCPUレイアウト(CPU-Layout)に基づいて制御装置10を設計する場合、CPUレイアウトをほとんど変更(Eingriff)する必要がない。その結果、このような制御装置の具体化(Implementierung)は、複雑ではない。
図2では、さらに、20ビットアドレスを生成するために、XDPTRレジスタ325などの外部配置レジスタを使用してもよい。この場合、自由命令コードは、アドレス指定のためにXDPTRレジスタを使用できるという指示(Angabe)を含んでいる。この自由命令コードは、ステップ400では、他の自由命令コード識別子によって、CPUの内部レジスタからの値(例えば、レジスタR1,R2,R3の内容)をもってロードされる。後者の場合には、上記自由命令コード識別子は、ステップ400のレジスタR1〜R3をロードするための命令に簡単に加えられる。このような、外部レジスタXPDTR325を用いた自由命令コードを使用すれば、レジスタR1〜R3の内容を決定するために、CPU30のレイアウトを変更する必要はない。この利点は、一時的に(zwischenzeitlich)CPUレジスタR0〜R7を他の目的で使用できる点である。
外部レジスタXDPTR325のロード、読み出し、または他の使用のための命令の例を、以下に表示する。この際、一般的な表示を使用する。
Figure 0003710465
ただし、Xmovは、レジスタロード命令(Register-Lade-Befehl)、Xaddは、加算命令(Addier Befehl)、Xpushは、スタックプッシュ命令(Stack-Befuellung-Befehl)、Xpopは、スタックポップ命令(Stack Entnahme-Befehl)、Xincは、増加命令(Inkrementier-Befehl)を示している。DPTR、Ri(ただし、i=1...7)、dadrおよびXは、CPU30の内部レジスタに属している。constl6は、16ビットオペランドを示している。「&」の印は、左右2つの式の連結を示す。右側の括弧に、各命令コード識別子のために必要なバイトを記載する。
自由命令コード識別子を基礎とする可能な読み出し命令は、全ての可能な宛先レジスタまたはCPU30におけるその他のアドレス指定可能なメモリに関連付けられていてもよい。さらに、自由命令コード識別子を基礎とし、間接アドレス指定方式を有する可能な読み出し命令は、すべてのレジスタ、または、CPU30内のすべてのメモリ領域(Speicherplatz)を使用でき、読み出し命令が参照する、20ビットアドレスを生成するためのこれらの組み合わせを使用できる。さらに、直接および間接アドレス指定方式の組み合わせ、すなわち、CPU30の1つまたは複数の内部レジスタと、自由命令コード識別子のアドレス部内の1つまたは複数のバイト(または、ビット)との内容の組み合わせも可能である。
さらに、上記の記載を、20ビットアドレスに関する書き込み命令に対応する自由命令コード識別子に簡単に適用できる。この場合、アクセスされるメモリ内容の伝送方向のみが、CPU30から記憶装置20へ変更されている。
以下の一般的な表示を用いた表2に、自由命令コード識別子310に応じて、支援手段40によって処理できる、可能な読み出し命令XMOVの例を、図2の実施例に従って、記載する。XMOVは、特別なレジスタによって示されるメモリ内容を例えばアキュムレータレジスタに書き込む命令コードを示すほうがよい。以下に一般的なポインタを参考にしてより詳しく説明する。この場合、以下では、Ri(ただし、i=0...4)は、内部レジスタRi、XDPTRは、外部データポインタ325、Aは、アキュムレータ250である。また、「off8」は、8ビットの相対値を示している。「&」は、式の左右の連接を示している。
Figure 0003710465
さらに、支援手段40は、一般的なポインタの取り扱いのために備えられている自由命令コードを支援し、または、上記自由命令コードに応答するということが提供されていてもよい。一般的なポインタは、アドレスと、アドレス指定方法の指示とを含んでいる。アドレス指定方法指示(Adressierungsartangabe)は、基本的に、一般的なポインタのアドレスを有する、どの命令を使用して、メモリにアクセスするのがよいかを示している。8051アーキテクチャは、4つのアドレス指定方式を含んでいる。これらアドレス指定方式に、新しい自由命令コード識別子を用いてアクセス方法を付け加える。4つの8051アドレス指定方法は、
アクセス(読み出しまたは書き込み)をCPU30のIRAM220に対して行い(MOV)、IRAM220は256バイトサイズであり、従って、たった1バイトによってアドレス指定できる、Iデータアクセスと、
外部メモリ(XRAM)の現在設定されているデータメモリ窓380へのアクセスを行い(MOVX)、アドレス指定のために2バイトが示される、Xデータアクセスと、
同じく、外部メモリ(XRAM)の現在設定されているデータメモリ窓380へのアクセスを行い、アドレス指定のために、16ビットアドレスを生成するように、レジスタAdrXhと所定のレジスタR1とを組み合わせる、Pデータアクセスと、
現在設定されているコードメモリ窓370にアクセスし(MOVC)、同じく、2バイトをアドレス指定のために示すコードアクセスとを含んでいる。CPU30が、データバスおよびアドレスバス70,86を介して各16ビットアドレスを出力する場合、コードアクセスは、別のバス(図示せず)に様々なバス状態を表示することにより、外側へのXデータアクセスと区別できる。
以下の一実施例では、一般的なポインタの情報、すなわち、アドレス表示およびアドレス指定方法表示を、20ビットアドレスの表示に関する図2の実施例のように、内部レジスタR1〜R3に蓄積する前に、一連の機械コード(Maschinencodesequenz)内に蓄積する。その後、一般的なポインタを取り扱うための命令に対応する、後続の自由命令コード識別子を、支援手段40を起動するために備える。さらに、支援手段40は、アドレス指定方法表示に応じて、あらかじめ定義されたCPU命令コード識別子をCPU30へ供給する。あらかじめ定義されたCPU命令コード識別子は、一般的なポインタのアドレス表示に応じて設定されているアドレス領域を備えている。しかし、一般的なポインタの取り扱いのための命令が参照している一般的なポインタは、一般的なポインタ自体の取り扱いのための命令の、自由命令コード識別子の部分に含まれていてもよい。図2の説明で分かるように、間接的なアドレス指定のために内部レジスタを使用できるだけではなく、さらに、外部XDPTRレジスタ325などの外部レジスタを使用できる。このとき、以下の説明を、簡単にこの場合に適用できる。
以下の表3では、読み出し過程の例として、各々のアクセス方法が第1列に、実際に目的とする命令を一般的に表示したものを第2列に、レジスタR3の内容が第3列に、レジスタR2の内容が第4列に、一般的なポインタを取り扱うために行なう自由命令コード識別子へのコードアクセスの、各時点の、レジスタR1の内容が第5列に、支援手段40からCPU30へ供給されるCPU命令コード識別子、または、一般的な表示の対応する命令が第6列に表示されている。この場合、@印は、メモリ内容を意味しており、このメモリ内容について、以下の数式では、アドレスとして、Aが、アキュムレータ250、AdrXhが、CPU30の内部レジスタ、MOVXが、記憶装置20に対する読み出し/書き込み命令、MOVが、CPU30の内部メモリIRAM220に対する読み出し/書き込み命令、MOVCが、記憶装置20に対するコードアクセスを示している。
Figure 0003710465
支援手段40が、命令コード識別子を、一般的なポインタの取り扱いのために受信する場合、支援手段40は、続いて、レジスタR3の内容をデコードする。このレジスタR3には、アドレス指定方法表示が蓄積されている。これは、アドレス指定方法表示に応じて、具体的には、アドレス指定方法が、20ビットデータアクセスではない場合は、中央処理装置30へCPU命令コード識別子を供給するためである。このCPU命令コード識別子は、アドレス指定方法に割り当てられているメモリに対する読み出し/書き込み命令に対応している。また、アドレス指定方法表示が、20ビットデータアクセスに対応する場合は、あらかじめ定義されたCPU命令コード識別子を中央処理装置30へ供給するためである。なお、このあらかじめ定義されたCPU命令コード識別子は、記憶装置20に対する読み出し/書き込み命令に対応している。また、さらに、場合によっては、中央処理装置30のアドレス信号を適切に操作するために、あらかじめ定義された処理を行なうためである。
Iデータアクセスの場合、支援手段40は、一般的なポインタ(以下では一般的な表示に関連してXMOV命令コードと呼ぶ)を取り扱うための自由命令コード識別子の代わりに、「MOV A,@R1」のための命令コード識別子を、CPU30に供給する。
Xデータアクセスの場合、XMOV命令コードの代わりに、「MOVX A,@R1」のためのCPU命令コードを、CPU30へ供給する。この場合、支援手段40は、CPU30がCPU命令コードに応じて出力した16ビットアドレスを、上位バイトに関するアドレスを伝送する時に、内部レジスタR2の内容に基づいて操作し、操作したアドレスをMMU50へ転送する。
コードアクセスの場合、XMOV命令コードの代わりに、「MOVC A,@A+DPTR」ためのCPU命令コードを、CPU30へ供給する。この場合、支援手段40は、供給されるCPU命令コードに応じてCPU30が出力する16ビットアドレスを、アドレス伝送する時に、内部レジスタR2、R1の内容に基づいて操作し、形を変更してMMU50へ出力する。
Pデータアクセスの場合、XMOV命令コードの代わりに、「MOVX A,@R1」のためのCPU命令コードを、CPU30へ供給する。
20ビットデータアクセスの場合、XMOV命令コードの代わりに、「MOMX A,@R1」のためのCPU命令コードを、CPU30へ供給する。この場合、支援手段40は、既に説明したように、アドレスを伝送する時に、CPU30が出力したアドレスを、内部レジスタR2,R3の内容に基づいて操作し、形状を変更して記憶装置20へ出力する。
一般的なポインタを取り扱うために自由命令コードを備えると、一般的なポインタを、ハードウエアによって取り扱える点が有利である。一方、従来の方法では、このためにソフトウェアでデコードする必要があった。一般的なポインタを取り扱うために、特別自由命令コードを備えて、図1の制御装置を特別に実現すれば、約20クロックサイクル分の時間を短縮できる。
表3に示すように、20ビットデータアクセスである表示をコード化するために、複数のコード化、すなわち、1h−Ehが可能である。上記実施例の、1MBのメモリの代わりに、14MBのメモリをアドレス指定できるように、4つのビットの、14の組み合わせを、他の20ビットと共に使用してもよい。このことを、24ビットを、アドレス指定に使用し、12ビットバス180,190の代わりに16ビットバスを使用して行なう。
これまで、図1の制御装置のためのステップの順序を、自由命令コードを参照し説明してきた。これら自由命令コードは、読み出し/書き込み命令に関連付けられている。以下に、制御装置10の操作方法(Funktionsweise)を、自由命令コードに関連して説明する。これら自由命令コードは、復帰を意図する、または、復帰を意図しないジャンプ命令などのジャンプ命令に対応する。
図3は、実施例について、図1の制御装置の場合に行われるステップの順序を示す。CPUが、次の命令コード識別子を、処理のために要求する。この命令コード識別子は、自由命令コード識別子である。また、この自由命令コード識別子は、直接アドレス指定方式および復帰を意図するジャンプ命令に関連付けられている。既述の実施例で行なうように、次の命令コード識別子の要求により、プログラムカウンタにコードアドレスが表示される。言い換えれば、先行するジャンプ命令の直前に処理する。別の場合には、要求は、CPU30からの要求信号の出力によって、および、記憶装置20よって与えられる20ビットコードアドレスを使用によって、実行する。
ステップ600では、CPU30が、アドレスバスおよびデータバス86,70を介してプログラムカウンタ240に蓄積されている16ビットコードアドレスを出力することにより、ジャンプ命令のすぐ後に続いて次に実行する命令を要求する。ステップ605では、プログラムカウンタ240の16ビットコードアドレスを、支援手段40が変更せずに送信した後、MMU50を介して、コード記述子340を使用しながら、20ビットコードアドレスに生成、または、操作し、この20ビットアドレスを、MMU50は、記憶装置20へ転送する。プログラムカウンタに蓄積されている16ビットコードアドレスは、例えば20ビットコードアドレスの下位部に対応している。一方、コード記述子340は、20ビットアドレスの上位4ビット部分に対応している。または、上位nビット部分に対応している。この場合、例えば、nを12とする。MMU50によって、16ビットコードアドレスの対応付けまたは操作は、この16ビットコードアドレスに補足することによって行なわれる。あるいは、コード記述子340は、バンクの20ビットベースアドレスまたは初期アドレスに対応している。その結果、記述子340を、16ビットコードアドレスに加算することによって対応付けが実行される。
ステップ610では、コード記述子340と、16ビットプログラムカウンタ240とによって生成された20ビットコードアドレスにある、要求された命令の命令コード識別子を、記憶装置20から呼び出し、MMU50によって変更せずに、アドレスバスおよびデータバス150,190,120を介して支援手段40へ送る。
ステップ615では、支援手段40のデコーダ300により、記憶装置20から受信した命令コード識別子が、命令コードによって示されるような自由命令コード識別子であるかどうかをチェックする。ステップ615で、メモリから呼び出された命令コード識別子が、自由命令コード識別子ではないという結果が出れば、ステップ620で、この命令コード識別子は、変更されないまま支援手段40を通過し、アドレスバスおよびデータバス70,86を介して、CPU30へ転送される。その後、CPU命令コードは、CPU30によって、従来の方法でデコードされ、実行される。しかし、記憶装置20からの命令コード識別子が、自由命令コード識別子であれば、ステップ625で、命令コードをデコードする。これは、どの自由命令コード識別子310が、命令コード識別子であるかを決定するためである。
図3の実施例では、既に説明したとおり、要求される命令コード識別子が、自由命令コード識別子であると考えられる。この自由命令コード識別子は、直接アドレス指定と、復帰を意図するジャンプ命令を参照する。ステップ630では、支援手段40が、自由命令コード識別子に備えられているアドレス部から、20ビットアドレスを生成する。この20ビットアドレスに、新しいジャンプ命令が関連付けられている。また、この20ビットアドレスは、自由命令コード識別子に対応するジャンプ命令の宛先アドレスである。このステップは、例えば、さらに、自由命令コード識別子の他の部分から直接的に、または、CPU30に対する内部または外部レジスタから間接的に、相対値を特定すること、および、加算器320によってアドレス部に表示される20ビットアドレスに相対値を加算することを含んでいてもよい。自由命令コード識別子は、例えば、命令コードのために1バイトを備えており、さらに3つのバイトを備えている。これらのうち20ビットが、20ビットアドレスを示し、残りの4ビットは、相対値を示している。
ステップ635では、支援手段40によって、CPU30に、自由命令コードが供給される。自由命令コードは、CPU命令コードに属していないが、命令セット290を決定する。ステップ635は、直接20ビットアドレス指定を有するジャンプ命令に対応している自由命令コード識別子が、4バイトを必要とし、その一方で、CPU30に供給され、続いて実行される、CALL命令のCPU命令コード識別子は、たった3バイトであるという事実を考慮して、CPUにあるプログラムカウンタ240を増加させるために備えられている。しかし、復帰を意図しないジャンプ命令を行なうほうが好ましい場合には、ステップ635も省いてもよい。なぜなら、この場合、プログラムカウンタの状態は、復帰アドレスとして必要ないからである。後続のステップについて以下に説明するような他の方法で、CPU30のスタック270に書き込みが行なわれる場合にもステップ635を省ける。
さらに、ステップ645では、支援手段40によってCPU30に、一連のあらかじめ定義されたCPU命令コード識別子が供給される。CPU命令コード識別子は、CPU30の命令セット290から少なくとも1つのジャンプ命令を含んでいる。このジャンプ命令は、16ビットアドレスを参照する。16ビットアドレスは、最終的に、コード記述子340と共に、20ビットジャンプアドレスを生成するものである。これは、例えば、ステップ600〜610に基づいて後続の命令要求を、適切に設定できるためである。上記一連の動作は、自由命令コードおよび内部レジスタから決定される20ビットアドレスによっている。
ステップ650では、CPU30が、あらかじめ定義された、一連のCPU命令コード識別子をデコードし、対応する命令を実行する。ステップ655にまとめられているように、一連のCPU命令コード識別子は、CPU30が、一連のCPU命令コード識別子を実行する際に、プログラムカウンタPCを、内部レジスタから決定された20ビットアドレスの下部、すなわち、下位16ビットを設定し、スタック270を、自由命令コード識別子に続く命令コード識別子を示す20ビットアドレスによって充填し、スタックポインタ230を、3バイトだけ増やすように備えられている。ステップ635では、支援手段40が、CPU30へ、例えば復帰を意図するジャンプ命令を供給する。このジャンプ命令は、16ビット宛先アドレス参照する。この16ビット宛先アドレスは、アドレス部から決定され、64kバイトバンクに関連する20ビットアドレスの相対値に対応している。この64kバイトバンクは、プログラムカウンタ240を16ビット宛先アドレスに設定するために、20ビットアドレスを含んでいる。さらに、この64kバイトバンクは、ステップ645では、自由命令コード識別子に続く命令コード識別子の20ビットアドレスをスタック270へ入力するために、20ビットアドレスの欠落ビットに対応するスタックプッシュ命令(一般的には、PUSH命令と表示される。)を含んでいる。あるいは、支援手段40は、CPU30へ、ステップ635では、例えば復帰を意図しないジャンプ命令を供給し、さらに、ステップ645では、自由命令コード識別子に続く命令コード識別子の20ビットアドレスをスタック270へ入力するために、20ビットアドレスの一部にそれぞれ対応する3つのスタックプッシュ命令(一般的には、PUSH命令と表示される。)を供給する。
ステップ660では、支援手段40が、アドレス部から決定された20ビットアドレスに基づいて、コード記述子340の実現化または適合を行なう。従って、その結果、コード記述子340は、20ビットアドレスが、コードメモリ窓370に含まれており、プログラムカウンタ240が、コードメモリ窓370内で、指定された位置を示すように設定されている。このように、支援手段40は、コード記述子340を管理する。
自由データアクセスに応じて、本発明によるコードジャンプの利点は、CPUがメモリサイズを最大限アドレスできるように必要であるコード記述子の管理を、ソフトウェアによるコード記述子の再設定によって行なう必要はなく、この再設定を、自由命令コード識別子によって行える点である。この自由命令コード識別子は、20ビットジャンプ命令に対応し、この自由命令コード識別子は、CPU30へ情報を供給するため、支援手段40に応答する。この情報は、20ビットアドレスに関連付けられていると同時に、コード記述子を更新または適合するものである。特に、コード記述子を新しく、または、再設定するためのソフトウェアの技術的な経費(Aufwand)が非常に高くつく(aufwendig)ような、復帰を意図するジャンプの場合、ジャンプ自由命令コード識別子が非常に有利である。さらに、命令セット290からのジャンプ命令を依然として使用できる。なぜなら、支援手段40は、命令セット290を決定するCPU命令コードを透過させ、これに対して応答しないからである。従って、命令セット290からのジャンプ命令は、現在設定されている、または、固定されているメモリ窓370に対して実行される。
図2に関して説明したとおり、データアクセスの場合のように、コードジャンプの場合も、ジャンプ命令が関連付けられている20ビットアドレスを生成するための様々な可能性がある。特に、図2の実施例に対応して間接アドレス指定方式を使用する自由命令コードが考えられる。
これまで、コードジャンプまたはデータアクセスに関連付けられている自由命令コードが生じる際の操作方法を参考にして、図1の制御装置の操作方法を説明してきた。以下では、特別な実施例について説明する。これらの実施例は、上記の簡単な説明(Darstellung)の様々な可能な変更および改善に関連するものである。
支援手段40によって実行され、自由命令コードが割り当てられている命令を、支援手段40への割り込みが、CPU30の割り込み線90、または、MMU50の割り込み線130にある割り込み信号によって実行できないような最小単位の命令(atomare Befehle)として実現できる。この場合、支援手段は、受信する割り込み信号(Unterbrechungssignale)を遮断する。これに加えて、一連の割り込み不可能なコード(Codesequenzen)を、最小単位の命令として実現するために、他の自由命令コード310を使用できる。
これまで、コードおよびデータメモリ窓370または380のサイズが、64kバイトであり、1つのコード記述子および1つのデータ記述子330または340が、MMU50において管理されることを説明してきたが、コードメモリ窓370および/またはデータメモリ窓380が、合計で64kバイトになるように複数のセグメント(Segmente)に分割されていてもよい。可能なセグメントのサイズは、例えば16kバイトまたは32kバイトである。メモリ窓370,380のセグメントサイズがそれぞれ32kバイトずつの場合、2つのデータ記述子および2つのコード記述子が、MMU50において管理される。例えば、ROMまたはXRAMメモリ領域に関連付けて、メモリセグメントを1つずつ使用し、また、EEPROMメモリ領域に関連付けて、残りのメモリセグメントを1つずつ使用することもできる。20ビットジャンプの場合、2つの記述子またはただ1つの記述子が、自動的に適合される。32kプログラムカウンタオーバーフロー(Programmzaehlerueberlauf)、つまり、プログラムカウンタが、32kを上回る場合、MMU50は、自動的に、増加または減少する。オーバーフローまたはアンダーフロー(Unterlauf)を、相対番地ジャンプのために、正しく取り扱う必要がある。セグメント外へ出る相対番地ジャンプの場合、例えばCPUのプログラムカウンタを適合し、MMU記述子を再設定する。セグメントのプログラムカウンタを終了する場合も、いわゆる自動加算器(Autoinkrementer)の処理は、例えば、相対番地ジャンプの場合と全く同じである。
さらに、例えばレジスタR1〜R3などの内部レジスタの、複数のバンクを備えることができ、支援手段がレジスタR1〜R3の内容にアクセスまたは問合せ(Abfrage)するときに、これまで説明してきたように、ちょうど設定されているバンクを使用できる。さらに、一般的に、CPUの他の内部レジスタも、上記のレジスタR0〜R7、dadrおよびDPTRとして、間接アドレス指定のために使用できる。
上記の説明を参考にすると、さらに、図1の制御装置の構造を様々に変更(Modifikationen)できることが分かる。それゆえ、MMU50と支援手段40とを相互に分断する必要はない。記述子とスタックの拡張(Stackerweiterung)は、例えば、支援手段40によってまたは支援手段40を用いて管理できる。CPU30の命令セット290からのメモリアクセス命令、または、ジャンプ命令を用いるプログラムの支援を省き、コードジャンプおよびデータアクセスのために自由命令コードを用いるプログラムのみを支援する場合、データ記述子を完全に省くこともできる。20ビットデータアクセスまたはジャンプ命令のみを用いるプログラムの利点は、このようなプログラムのために、連続でアドレス指定できる1メガバイトの記憶装置を管理、または、アドレス指定できる点である。さらに、CPUを他の構造にしてもよい。その結果、例えば、アキュムレータレジスタ250、スタックポインタ230、およびプログラムカウンタ240が、IRAM220において管理されていてもよい。とりわけ、IRAMは、任意の他のメモリ型(Speicherart)、または、これらの組み合わせを含んでいてもよい(例えばNVM)。
図2および図3に示す順序を参照すると、これらの順序は、ステップの順番に関連して変更できることが分かる。
3バイトがスタックにあり、MMUが自動的に再構成されている、復帰を意図する上記20ビットコードジャンプ命令(FCALL)に加えて、または、この命令の代わりに、既述の20ビットFCALL命令と同じように、しかし、復帰ジャンプデータをスタックに蓄積せずに実行される、復帰を意図しない20ビットコードジャンプ命令(FJMP)が備えられていてもよい。例えば、復帰ジャンプオプション(Ruecksprungoption)を有する、または、復帰を意図する全ての20ビットジャンプ命令では、3バイトが、スタックに書き込まれる。この場合、CPU復帰ジャンプ命令(RET)は、スタックから3つのバイトが取り出されるように備えられている。スタックから取り出されたバイトを基礎として、コード記述子を、最後のCALL命令の前に置くことができる。各割り込みレベル(Interruptpegel)のために、適切なコンテキスト(Kontext)を蓄積できる。これは、命令セット290への復帰ジャンプすなわち復帰ジャンプ命令の生じる場合に、古いコンテキストを再保存しなくてもよいためである。
従って、制御装置の上記実施例は、複数の問題を解決する。問題とはすなわち、処理速度に関しては十分であるが、アドレス指定容量に関しては不十分なアーキテクチャを使用する場合がもとである。これまでに説明してきた制御装置は、拡張されたアドレス空間に存在するデータに直接アクセスできる。特別な実現では、アクセス時間が、現在設定されているメモリ窓にあるデータにアクセスする場合よりも、2クロックサイクル分長いだけである。さらに、混合アドレス指定、つまり、直接アドレス指定方式と間接アドレス指定方式との双方を使用する場合は、例えばデータポインタと、4ビットの自由命令コードの空白部とを使用しながら、支援手段にある24ビット加算器を用いて、データポインタを変更せずに、隣り合う複数のバイト(24=16バイト)のデータに直接アクセスする。このことは、8ビットを、自由命令コードのアドレス部と、データポインタとにより生成されるアドレスに関する相対番地として使用して行なう。MMUによるコード分割(Codesegmentierung)は、設定されていないメモリ窓にあるコードを実行するために、プログラマー(Programmierer)がMMUを正確に再構成する必要がなくなることで、簡単になる。再構成および復元は、自由命令コードを基礎とする20ビットコードジャンプ命令または20ビットデータアクセス命令を使用して、自動的に行なう。その結果、プログラムマーは、1MBの物理アドレス空間全体を、連続でアドレス指定可能なアドレス空間とみなすと共に、この場合、CPUの命令セットのみを基礎するプログラムのための下位互換性は、維持されたままである。一般的なポインタのために、ソフトウェアによる複雑なデコードの代わりにハードウエア的なデコード(Hardwaretechnische Decodierung)を使用する。このデコードは、かなり速い処理を可能にする。20ビットデータアクセスの場合のように、一般的なポインタの取り扱いの際にも、データポインタを変更せずに連続するデータに効率的にアクセスするために、自由命令コード識別子の使用されていない部分の相対値を使用できる。さらに、内部スタック領域を、外部領域に拡張でき、一連の割り込みできないコードを、最小単位の命令として実現できる。既存のCPUレイアウトをほんの少し変更するだけでこの新規性と改善とが達成される。このことは、自由命令コード識別子を、一連の命令コード識別子に置換え、CPU外部制御信号を、状態遷移機械(Zustandsmaschine)として実行されてもよい支援手段またはシェル(Schale)を用いて、命令は外部からは指定された命令のように見えるように補正することにより行なわれる。
特に、チップカード分野における本発明の利点は、性能余剰(Leistungsfaehigkeitsueberschuss)および顧客側のコードの余分な経費(Codezusatzaufwand)削減と同時に、効果的なコンパイラ支援(Compilerunterstuetzung)が得られるという点である。
MMUと支援手段については、これらを1つの装置として実現してもよい。
さらに、本発明は、上記の8051アーキテクチャ以外の他の制御装置キテクチャに使用でき、従って、メモリ窓と記憶装置とに関するメモリサイズ表示、および、バイト毎の読み出し、および、アドレスバスおよびデータバスの数は、単なる例として示したものである。
本発明の実施例の制御装置のブロック図である。 自由命令コードが、間接アドレス指定方式による読み出し命令に対応する場合に、図1の制御装置が実行するステップを示すフローチャートである。 自由命令コードが、間接アドレス指定方式による読み出し命令に対応する場合に、図1の制御装置が実行するステップを示すフローチャートである。 自由命令コードが、復帰を意図する直接アドレス指定によるジャンプ命令に対応する場合に、図1の制御装置が実行するステップを示すフローチャートである。 CPUのアドレス指定可能性を拡張するために従来の可能な解決策を使用している制御装置のブロック図である。
符号の説明
10 制御装置
20 記憶装置
30 中央処理装置(CPU)
40 支援手段
50 メモリ管理装置(MMU)
60 データバス
80 アドレスバス
90 割り込みバス
100 データバス
120 アドレスバス
130 割り込みバス
140 データバス
150 データバス
180 アドレスバス
190 アドレスバス
210 デコーダ
220 IRAM
230 スタックポインタ
240 プログラムカウンタ
245 データポインタレジスタ
250 アキュムレータ
260 内部レジスタ
270 スタック
280 CPU−演算コード
290 命令セット
300 デコーダ
310 自由演算コード
320 加算器
325 外部データポインタレジスタ
330 データ記述子
340 コード記述子
350 割り込み記述子
370 コードメモリ窓
380 データメモリ窓
542 制御
800 制御装置
805 中央処理装置(CPU)
810 メモリ管理ユニット(MMU)
815 記憶装置
820 アドレスバス
825 データバス
840 アドレスバス
845 データバス
855 命令セット
860 データ記述子
865 コードメモリ窓
870 管理コード
875 コード記述子
880 データメモリ窓
885 内部レジスタ
890 スタック

Claims (23)

  1. 少なくとも1つの特別命令コード識別子を含む1セットの命令コード識別子が割り当てられている中央処理装置(30)であって、記憶装置(20)の第1メモリサイズを有する第1メモリ領域(370,380)をアドレス指定するために備えられている中央処理装置(30)を、記憶装置(20)に関してアドレス指定のために制御する制御方法であって、
    記憶装置(20)から中央処理装置(30)へのデータ通信を、中央処理装置(30)と接続されている支援手段(40)によって監視するステップ(615)を含み、
    記憶装置(20)から中央処理装置(30)へのデータ通信が、特別命令コード識別子(310)を含む場合は、
    記憶装置(20)の第2メモリ領域(20)に定義されている新しいアドレスを、支援手段(40)によって生成するステップ(630)と、
    中央処理装置(30)の命令セットからのジャンプ命令が割り当てられているあらかじめ定義された命令コード識別子を、支援手段(40)によって、中央処理装置(30)へ提供するステップ(645)と、
    宛先アドレスと共に新しいアドレスを生成するコード記述子(340)を、支援手段(40)によって管理するステップ(660)とを含み、
    上記第2メモリ領域(20)は、第1メモリサイズよりも大きい第2メモリサイズを有しており、
    上記あらかじめ定義された命令コード識別子は、第1メモリ領域(370,380)に関する宛先アドレスを含んでいることを特徴とする制御方法。
  2. 少なくとも1つの特別命令コード識別子を含む1セットの命令コード識別子(280,310)を有する中央処理装置(30)であって、記憶装置(20)の第1メモリサイズを有する第1メモリ領域(370,380)をアドレス指定するために備えられている中央処理装置(30)と、
    記憶装置(20)から中央処理装置(30)へのデータ通信を監視するために、中央処理装置(30)と接続されている支援手段(40)とを備える制御装置であって、
    上記支援手段(40)は、
    記憶装置(20)から中央処理ユニット(30)へのデータ通信が、特別命令コード識別子(310)を含む場合に、
    記憶装置(20)の第2メモリ領域(20)に定義されている新しいアドレスを生成するため、
    中央処理装置(30)の命令セットからのジャンプ命令が割り当てられているあらかじめ定義された命令コード識別子を、中央処理装置(30)へ提供するため、および、
    宛先アドレスと共に新しいアドレスを生成するコード記述子(340)を管理するために備えられており、
    上記第2メモリ領域(20)は、第1メモリサイズよりも大きい第2メモリサイズを有しており、
    上記あらかじめ定義された命令コード識別子は、第1メモリ領域(370,380)に関する宛先アドレスを含んでいることを特徴とする制御装置。
  3. 上記一連の命令コード識別子(280,310)は、複数の命令コード識別子を備え、上記複数の命令コード識別子には、命令が割り当てられており、上記命令は、中央処理装置(30)の命令セット(290)を決定し、上記特別命令コード識別子(310)には、中央処理装置(30)の命令セット(290)からの命令は割り当てられていないことを特徴とする請求項2に記載の制御装置。
  4. コード記述子を蓄積するための外部レジスタをさらに備える制御装置であって、上記外部レジスタは、中央処理装置(30)の外側に配置されており、上記コード記述子は、第2メモリ領域(20)内の第1メモリ領域(370)の位置を定義するために備えられており、
    上記支援手段(40)は、
    記憶装置から中央処理装置へのデータ通信が、特別命令コード識別子を含む場合に、
    コード記述子(340)の値を、新しいアドレスが第1メモリ領域に含まれているように設定するため、および、
    第1メモリ領域(370)に関する宛先アドレスを、第1メモリ領域(370)に関する宛先アドレレスが、第2メモリ領域に関する新しいアドレスに対応するように設定するために備えられていることを特徴とする請求項2または3に記載の制御装置。
  5. 中央処理装置(30)に備えられており、第1メモリ領域(370)に関するコードアドレスを蓄積しているプログラムカウンタ(240)と、
    中央処理装置(30)から記憶装置(20)へのデータ通信を監視するために、中央処理装置(30)と接続されている装置(50)とをさらに備える制御装置であって、
    上記装置(50)は、
    中央処理装置(30)から記憶装置(20)へのデータ通信が、第1メモリ領域に関するコードアドレスを含んでいる場合に、
    第2メモリ領域(20)に関する新しいアドレスを得ることを目的として、コードアドレスを、コード記述子(340)の内容に基づいて操作するため、および、
    記憶装置(20)にアクセスすることを目的として、コードアドレスを、形を変更して記憶装置(20)へ転送するために備えられていることを特徴とする請求項4に記載の制御装置。
  6. 中央処理装置(30)は、次に処理する命令コード識別子を要求するために供給されるあらかじめ定義された命令コード識別子に応じて、
    宛先アドレスを、中央処理装置(30)のプログラムカウンタ(240)に蓄積するため、および、
    宛先アドレスを、中央処理装置(30)から記憶装置(20)へのデータ通信の範囲内で出力するために備えられていることを特徴とする請求項2から5のいずれか1項に記載の制御装置。
  7. 上記中央処理装置(30)は、スタックメモリ(270)と、スタックメモリポインタ(230)とをさらに備え、上記スタックメモリポインタ(230)は、スタックメモリ(270)の位置を示すものであって、上記位置は、現在、中央処理装置(30)によって、スタックメモリ(270)からデータを取り出し、または、スタックメモリ(270)へデータを追加できる位置のことであり、
    上記支援手段(40)は、さらに少なくとも1つの他のあらかじめ定義された命令コード識別子を、中央処理装置(30)へ供給するように適合されており、中央処理装置(30)の命令セットからの命令は、スタックメモリポインタにおけるスタックメモリに値を充填するため、この少なくとも1つの他の命令コード識別子に割り当てられており、上記値は、第2メモリ領域に関する現在のアドレスに依存しており、上記現在のアドレスに、特別命令コード識別子に続く命令コード識別子が割り当てられていることを特徴とする請求項2から6のいずれか1項に記載の制御装置。
  8. 上記宛先アドレスは、新しいアドレスのより下位の部分であり、上記記述子は、新しいアドレスのより上位の部分であることを特徴とする請求項2からのいずれか1項に記載の制御装置。
  9. 少なくとも1つの特別命令コード識別子を含む1セットの命令コード識別子が割り当てられている中央処理装置(30)であって、記憶装置(20)の第1メモリサイズを有する第1メモリ領域(370,380)をアドレス指定するために備えられている中央処理装置(30)を、記憶装置(20)に関するアドレス指定のために制御する制御方法であって、
    記憶装置(20)から中央処理装置(30)へのデータ通信と、中央処理装置(30)から記憶装置(20)へのデータ通信とを、中央処理装置(30)と接続されている支援手段(40)によって監視(420)するステップを含み、
    記憶装置(20)から中央処理装置(30)へのデータ通信が、特別命令コード識別子を含む場合は、
    記憶装置(20)の第2メモリ領域(20)に定義されている新しいアドレスを、支援手段(40)によって生成するステップ(440)と、
    中央処理装置(30)の命令セットからのジャンプ命令が割り当てられているあらかじめ定義された命令コード識別子を、支援手段(40)によって、中央処理装置(30)へ供給するステップ(445)と、
    第2メモリ領域に関する操作されたアドレスを得ることを目的として、第1メモリ領域(380)に関連して定義されているアドレスを、中央処理装置(30)から記憶装置(20)へのデータ通信の範囲内で、新しいアドレスに基づいて、支援手段(40)によって操作するステップ(455)とを含み、
    上記第2メモリ領域(20)は、第1メモリサイズよりも大きい第2メモリサイズを有していることを特徴とする制御方法。
  10. 少なくとも1つの特別命令コード識別子を含む1セットの命令コード識別子(280,310)を有する中央処理装置(30)であって、記憶装置(20)の第1メモリサイズを有する第1メモリ領域(370,380)をアドレス指定するために備えられている中央処理装置(30)と、
    記憶装置(20)から中央処理装置(30)へのデータ通信と、中央処理装置(30)から記憶装置(20)へのデータ通信とを監視するために、中央処理装置(30)と接続されている支援手段(40)とを備える制御装置であって、
    上記支援手段は、
    記憶装置(20)から中央処理装置(30)へのデータ通信が、特別命令コード識別子を含む場合に、
    記憶装置(20)の第2メモリ領域(380)に定義されている新しいアドレスを生成するため、
    中央処理装置(30)の命令セットからの命令が割り当てられているあらかじめ定義された命令コード識別子を、中央処理装置(30)へ提供するため、および、
    第2メモリ領域に関する操作されたアドレスを得ることを目的として、第1メモリ領域(380)に関連して定義されているアドレスを、中央処理装置(30)から記憶装置(20)へのデータ通信の範囲内で、新しいアドレスに基づいて操作するために備えられており、
    上記第2メモリ領域(380)は、第1メモリサイズよりも大きい第2メモリサイズを有していることを特徴とする制御装置。
  11. 上記一連の命令コード識別子(280,310)は、複数の命令コード識別子を備え、上記複数の命令コード識別子には、命令が割り当てられており、上記命令は、中央処理装置(30)の命令セット(290)を決定し、上記特別命令コード識別子(310)には、中央処理装置(30)の命令セット(290)からの命令は割り当てられていないことを特徴とする請求項10に記載の制御装置。
  12. 上記あらかじめ定義された命令コード識別子は、中央処理装置(30)の命令セット(290)の書き込み命令または読み出し命令に割り当てられていることを特徴とする請求項10または11に記載の制御装置。
  13. 上記命令は、第1メモリ領域(380)に関するアクセスアドレスに関連付けられており、上記アクセスアドレスは、新しいアドレスに対応しており、
    上記支援手段(40)は、第1メモリ領域(380)に関連して規定されているアドレスを、中央処理装置(30)から記憶装置(20)へのデータ通信の範囲内で操作する場合に、
    上記アドレスを、新しいアドレスの残りの部分に補足するために備えられていることを特徴とする請求項10から12のいずれか1項に記載の制御装置。
  14. 上記命令は、第1メモリ領域(380)に関するアクセスアドレスに関連付けられており、
    上記支援手段(40)は、第1メモリ領域(380)に関連して規定されているアドレスを、中央処理装置から記憶装置(20)へのデータ通信の範囲内で操作する場合に、
    上記アドレスを、新しいアドレスに置き換えるために備えられていることを特徴とする請求項10から13のいずれか1項に記載の制御装置。
  15. 上記命令は、さらに相対値に関連付けられており、
    上記支援手段(40)は、操作されたアドレスに相対値を加算するために備えられている、請求項13または14に記載の制御装置。
  16. 第2メモリ領域(20)内の第1メモリ領域(380)の位置を示すために備えられているアドレス(330)を蓄積するために、中央処理装置(30)の外側に備えられている外部レジスタと、
    中央処理装置から記憶装置(20)へのデータ通信を監視するために、中央処理装置(30)と接続されている装置(50)とをさらに備える制御装置であって、
    上記装置(50)は、
    中央処理装置(30)から記憶装置(20)へのデータ通信が、第1メモリ領域(380)に関して定義されているアドレスを含んでいる場合に、
    第2メモリ領域(20)に関する対応するアドレスを得ることを目的として、上記アドレスを、外部レジスタ(330)の内容に基づいて操作するため、および、
    記憶装置(20)にアクセスすることを目的として、上記アドレスを、形を変更して記憶装置(20)へ転送するために備えられており、
    上記支援手段(40)は、
    記憶装置(20)から中央処理装置(30)へのデータ通信が、特別命令コード識別子を含んでいる場合に、
    外部レジスタ(330)の内容を、第1メモリ領域(380)が操作されたアドレスを含むように適合するために備えられており、
    記憶装置(20)から中央処理装置(30)へのデータ通信が、複数の命令コード識別子の命令コード識別子を含み、この命令コード識別子に、中央処理装置(30)の命令セット(290)についての読み出し命令または書き込み命令が割り当てられている場合、
    上記命令コード識別子を、中央処理装置へ転送するため、および、
    第1メモリ領域に関連して定義されているアドレスを、中央処理装置(30)から記憶装置(20)へのデータ通信に、変更せずに残しておくために備えられていることを特徴とする請求項10から15のいずれか1項に記載の制御装置。
  17. 上記特別命令コード識別子は、一般的なポインタの取り扱いのための命令に対応しており、上記一般的なポインタは、アドレス表示とアドレス指定方法表示とを含み、上記アドレス表示は、新しいアドレスに対応し、アドレス指定方法表示は、アドレス表示が第2メモリ領域に関連付けられていることを表示することを特徴とする請求項10に記載の制御装置。
  18. 上記支援手段(40)は、記憶装置(20)から中央処理装置(30)へのデータ通信が、特別命令コード識別子を含んでおり、上記特別命令コード識別子が、アドレス表示とアドレス指定方法表示とを含む一般的なポインタを取り扱うための命令に対応する場合に、
    アドレス指定方法をチェックするために備えられており、
    アドレス指定方法表示が、アドレス表示が第2メモリ領域に関連付けられていることを表示する場合、新しいアドレスの生成、あらかじめ定義された命令コード識別子の供給、および、アドレスの操作を実行するため、および、
    アドレス指定方法表示が、アドレス表示が第1メモリ領域に関連付けられていることを表示する場合、アドレス表示に関連付けられている命令セット(290)からの命令が割り当てられている命令コード識別子を、中央処理装置へ供給するために備えられていることを特徴とする請求項17に記載の制御装置。
  19. 上記中央処理装置(30)は、少なくとも1つの内部レジスタ(260)を備え、支援手段(40)は、少なくとも1つの内部レジスタの内容を決定するために、中央処理装置(30)と接続されており、
    新しいアドレスを生成する場合に、
    少なくとも1つの内部レジスタの内容を決定するため、および、
    少なくとも1つの内部レジスタの内容から、新しいアドレスを生成するために備えられていることを特徴とする請求項2から8および請求項10から18のいずれか1項に記載の制御装置。
  20. 少なくとも1つの外部データポインタレジスタ(325)を備える制御装置であって、
    外部データポインタレジスタ(325)は、中央処理装置の外側に配置されており、
    支援手段(40)は、
    新しいアドレスを生成する場合に、
    少なくとも1つの外部データポインタレジスタ(325)の内容を決定するため、および、
    少なくとも1つの外部データポインタレジスタ(325)の内容から、新しいアドレスを生成するために備えられていることを特徴とする請求項2から8および請求項10から18のいずれか1項に記載の制御装置。
  21. 上記支援手段(40)は、
    新しいアドレスを生成する場合に、
    新しいアドレスを、少なくとも部分的に、命令コード識別子のアドレス部から生成するために備えられていることを特徴とする請求項2から8および請求項10から20のいずれか1項に記載の制御装置。
  22. 上記支援手段(40)は、新しいアドレスを、少なくとも部分的に、命令コード識別子のアドレス部から生成する場合に、
    中央処理装置(30)に上記の、または、他の特別命令コード識別子を供給するために備えられており、
    中央処理装置(30)が、第1メモリ領域に関連付けられているコードアドレスが蓄積されているプログラムカウンタを備えており、
    中央処理装置(30)は、
    次に処理する命令コード識別子を、コードアドレスを用いて要求するため、および、
    中央処理装置(30)に供給された特別命令コード識別子に応じて、プログラムカウンタ(240)を増やし、それ以外の場合は、中央処理装置(30)に供給された特別命令コード識別子を無視するために備えられていることを特徴とする請求項21に記載の制御装置。
  23. 上記支援手段(40)は、記憶装置(20)から中央処理装置(30)へのデータ通信に、特別命令コード識別子(310)が含まれている場合、受信される割り込み信号を遮断するために備えられていることを特徴とする請求項2から8および請求項10から22のいずれか1項に記載の制御装置。
JP2003514409A 2001-07-18 2002-06-17 記憶装置におけるアドレス指定のための中央処理装置の制御方法および制御装置 Expired - Fee Related JP3710465B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP01117389A EP1278120A1 (de) 2001-07-18 2001-07-18 Controller und Verfahren zum Ansteuern einer zentralen Verarbeitungseinheit für eine Speicheradressierung
PCT/EP2002/006655 WO2003009133A2 (de) 2001-07-18 2002-06-17 Verfahren zum ansteuern einer zentralen verarbeitungseinheit für eine adressierung bezüglich eines speichers und controller

Publications (2)

Publication Number Publication Date
JP2004535642A JP2004535642A (ja) 2004-11-25
JP3710465B2 true JP3710465B2 (ja) 2005-10-26

Family

ID=8178068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003514409A Expired - Fee Related JP3710465B2 (ja) 2001-07-18 2002-06-17 記憶装置におけるアドレス指定のための中央処理装置の制御方法および制御装置

Country Status (8)

Country Link
US (1) US7062632B2 (ja)
EP (2) EP1278120A1 (ja)
JP (1) JP3710465B2 (ja)
CN (1) CN100407132C (ja)
AT (1) ATE317140T1 (ja)
AU (1) AU2002314174A1 (ja)
DE (1) DE50205757D1 (ja)
WO (1) WO2003009133A2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785758B1 (en) * 2001-06-01 2004-08-31 Advanced Micro Devices, Inc. System and method for machine specific register addressing in a split transactional unidirectional bus architecture
US7898047B2 (en) * 2003-03-03 2011-03-01 Samsung Electronics Co., Ltd. Integrated nitride and silicon carbide-based devices and methods of fabricating integrated nitride-based devices
US7352621B2 (en) * 2005-06-23 2008-04-01 Intel Corporation Method for enhanced block management
CN1963787A (zh) * 2005-11-10 2007-05-16 其乐达科技股份有限公司 嵌入式系统的快闪存储器存取方法及存取电路
US20110138158A1 (en) * 2008-07-30 2011-06-09 Masatomo Mitsuhashi Integrated circuit
KR20110097447A (ko) * 2010-02-25 2011-08-31 삼성전자주식회사 인터럽트 프록시 기능을 구비한 시스템 온 칩 및 그에 따른 인터럽트 프록시 처리방법
GB2540949B (en) * 2015-07-31 2019-01-30 Arm Ip Ltd Probabilistic Processor Monitoring
JP6520545B2 (ja) * 2015-08-10 2019-05-29 オムロン株式会社 サポート装置およびサポートプログラム
CN116578352B (zh) * 2023-07-11 2023-09-22 沐曦集成电路(上海)有限公司 芯片初始化系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4675810A (en) * 1981-05-22 1987-06-23 Data General Corp. Digital data processing system having a uniquely organized memory system using object-based addressing and in which operand data is identified by names accessed by name tables
US4453212A (en) * 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
EP0519348B1 (en) * 1991-06-19 1999-07-28 Hewlett-Packard Company Co-processor supporting architecture adapted to a processor which does not natively support co-processing
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
DE4340551A1 (de) 1993-11-29 1995-06-01 Philips Patentverwaltung Programmspeichererweiterung für einen Mikroprozessor
US5826074A (en) * 1996-11-22 1998-10-20 S3 Incorporated Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US6023750A (en) * 1997-03-07 2000-02-08 Advanced Micro Devices, Inc. Microcontroller having dedicated hardware for memory address space expansion via auxilliary address signal generation
US6026478A (en) * 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
EP0942357A3 (en) * 1998-03-11 2000-03-22 Matsushita Electric Industrial Co., Ltd. Data processor compatible with a plurality of instruction formats
US6349380B1 (en) * 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
KR100496856B1 (ko) * 1999-05-20 2005-06-22 삼성전자주식회사 어드레스 확장이 가능한 데이터 처리 시스템

Also Published As

Publication number Publication date
AU2002314174A1 (en) 2003-03-03
EP1407348A2 (de) 2004-04-14
EP1407348B1 (de) 2006-02-01
JP2004535642A (ja) 2004-11-25
US7062632B2 (en) 2006-06-13
EP1278120A1 (de) 2003-01-22
WO2003009133A3 (de) 2003-05-01
WO2003009133A2 (de) 2003-01-30
WO2003009133A8 (de) 2003-11-27
CN1533499A (zh) 2004-09-29
ATE317140T1 (de) 2006-02-15
CN100407132C (zh) 2008-07-30
US20040177230A1 (en) 2004-09-09
DE50205757D1 (de) 2006-04-13

Similar Documents

Publication Publication Date Title
US10514922B1 (en) Transfer triggered microcontroller with orthogonal instruction set
JP3186905B2 (ja) コンピュータブート用両エンディアンファームウェアシステム
US20020004904A1 (en) Cryptographic data processing systems, computer program products, and methods of operating same in which multiple cryptographic execution units execute commands from a host processor in parallel
JP3710465B2 (ja) 記憶装置におけるアドレス指定のための中央処理装置の制御方法および制御装置
JP4988082B2 (ja) マイクロプロセッサ及びデータ処理システム
CN101868780B (zh) 增强的微处理器或微控制器
JPH01119828A (ja) マイクロプロセッサ
US5680632A (en) Method for providing an extensible register in the first and second data processing systems
US5127096A (en) Information processor operative both in direct mapping and in bank mapping, and the method of switching the mapping schemes
JPH0651981A (ja) データ処理装置
KR100534613B1 (ko) 플래쉬 메모리를 이용한 시스템 부팅 장치 및 그 방법
US11138140B2 (en) Configuring first subsystem with a master processor and a second subsystem with a slave processor
JPH09505430A (ja) 再構成可能なプログラム状態語を有するマイクロコントローラ
KR100960095B1 (ko) 마이크로컨트롤러 명령어 셋트
WO2001086432A2 (en) Cryptographic data processing systems, computer program products, and methods of operating same, using parallel execution units
US7415602B2 (en) Apparatus and method for processing a sequence of jump instructions
US11360782B2 (en) Processors to configure subsystems while other processors are held in reset
TW200405207A (en) Apparatus and method for processing a sequence of jump instructions
US20020004877A1 (en) Method and system for updating user memory in emulator systems
CN102150132A (zh) 信息处理装置
KR100897857B1 (ko) 마이크로컨트롤러 명령어 셋트
JP2607319B2 (ja) プログラマブルコントローラ
JP3539951B2 (ja) データ処理装置
JPH1040094A (ja) ファームウエアのプログラム制御装置
JP2004334593A (ja) メモリブリッジ装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050616

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050616

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: 20050712

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050809

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080819

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090819

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090819

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100819

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110819

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110819

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120819

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120819

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130819

Year of fee payment: 8

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees