JPH10143481A - マルチタスキング処理システム環境における効率的な文脈セーブ及び復旧装置及び方法 - Google Patents

マルチタスキング処理システム環境における効率的な文脈セーブ及び復旧装置及び方法

Info

Publication number
JPH10143481A
JPH10143481A JP9222148A JP22214897A JPH10143481A JP H10143481 A JPH10143481 A JP H10143481A JP 9222148 A JP9222148 A JP 9222148A JP 22214897 A JP22214897 A JP 22214897A JP H10143481 A JPH10143481 A JP H10143481A
Authority
JP
Japan
Prior art keywords
processor
program
context
context change
state information
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.)
Pending
Application number
JP9222148A
Other languages
English (en)
Inventor
Seungyoon Peter Song
ピーター ソング ションユン
Moataz A Mohamed
エー モハメッド モアタズ
Le Trong Nguyen
トロン ギュエン リ
Heon Chul Park
チュル パク ヒョン
Jerry Van Aken
ヴァン エイケン ジェリー
Alexandro Forin
フォリン アレクサンドロ
Andrew Raffman
ラッフマン アンドリュー
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JPH10143481A publication Critical patent/JPH10143481A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/30003Arrangements for executing specific machine instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 マルチプロセッサ構造を有するマルチタスキ
ング(multi-tasking)環境における効率的な文脈(conte
xt)変更処理を提供すること。 【解決手段】 文脈変更を行う際、プロセッサはコプロ
セッサが現在実行中のプログラムを文脈変更するように
要求する。これにより、実行中のプログラム内の所定の
適切なポイントでプログラムの実行を中止し、プログラ
ムを無事復旧するために必要最少量のプロセッサ状態情
報のみを格納することによって、コプロセッサは応答す
る。適切なポイントは、アプリケーションプログラマー
によって文脈変更される時、最少量のプロセッサ情報の
保存を要求する、実行中のプログラム内の位置で選択さ
れる。最少量のプロセッサ情報のみを格納することによ
って、プロセッサ時間が文脈セーブ及び復旧動作の間に
蓄積される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピューティン
グシステム(computing system)、特に例えばマルチプロ
セッサ構造を有するマルチタスキング(multi-tasking)
環境における文脈(context)変更処理に関する。
【0002】
【従来の技術】一般的にマルチタスキングとは、コンピ
ュータで時分割プログラムを遂行し、複数のプログラム
を同時に実行することをいう。実際にコンピュータが複
数のプログラム間を交互に実行する時、コンピュータ使
用者はプログラムが並列に実行されると感じる。プログ
ラム実行が時分割されると、“文脈変更(context switc
hed out)”(タスク変更)が起こる前の所定時間の間、
一つのプログラムが実行されてから他のプログラムが実
行される。
【0003】文脈変更されたプログラムを更にスタート
する時、このプログラムはその以前に実行が終了された
正確な位置から、再びプログラムの実行が始まらなけれ
ばならない。文脈変更されたプログラムを再実行するこ
とに備えて、プロセッサは他のプログラムを実行する
前、文脈変更されるプログラムの状態をセーブする過程
を経る。このプログラム状態は、プログラムが文脈変更
される時、プロセッサの状態により多様なメモリ位置に
示される。
【0004】プログラマーの立場から見る時の文脈変更
は、任意の時間にプログラム内の任意の位置に発生する
ので、文脈変更されたプログラムのプログラマーにとっ
ては明らかなものである。一方、文脈変更を遂行するオ
ペレーティングシステムは、文脈変更されるプログラム
の状態が分からない。結果的に、すべてのプロセッサの
状態情報には、プログラムが文脈変更される時、必ずセ
ーブされなければならない。このプロセッサの状態情報
には、すべての構造的で、且つそのソフトウェアがよく
分かるレジスタだけでなく、スクラッチパッド(scratch
pad)メモリのようなプロセッサ内のみで知られたアドレ
スでマッピングされるメモリ位置が含まれる。
【0005】
【発明が解決しようとする課題】しかしながら、多くの
量の状態情報を有するプロセッサ構造のためのすべての
プロセッサ状態情報のセーブ及び復旧と関連した従来の
プログラム文脈変更方法は、効率的でなく、プロセッサ
の動作に否定的な影響を及ぼすこともある。プロセッサ
状態情報の格納部に割当てられた、アクセスされる多数
のメモリ位置と、相対的に低い帯域幅のバスを通して他
のメモリ位置にプロセッサの状態情報を記入する動作を
必要とするプロセッサ動作に、従来の方法における文脈
変更と関連した非効率的で否定的な影響が部分的に生じ
る。従来の文脈変更方法におけるこのような非効率性
は、またセーブされたすべてのプロセッサ状態情報が、
メモリ位置に割当てられたプロセッサ情報状態に更に伝
達される時、プログラム復旧過程の間、プロセッサの動
作に否定的な影響を及ぼす。このような非効率性は、そ
れぞれのプログラム文脈が変更される間蓄積される。例
えば、マルチメディア信号プロセッサは、100個以上
のレジスタと、メモリ位置内の7キロバイト以上に表現
されるプロセッサ状態を有することができる。それぞれ
の文脈変更時には、通常的にこのようなすべての情報が
プロセッサ状態メモリ格納位置に伝達されなければなら
ない。
【0006】マルチメディア信号プロセッサを採用し
た、マルチメディアシステムのようなマルチタスキング
システムにおける文脈変更と関連した悪影響を減らすた
めには、プログラムを実行する時、これの間の要望しな
い遅延を減少させなければならない。これは、プログラ
ムがマルチメディア処理環境でのような多量の情報を処
理することに関連する場合に著しい効果を示す。
【0007】本発明は、プログラム間の文脈変更のため
に必要な処理時間を減らすことを目的とする。文脈変更
されるプログラムのポイント(位置)は、後でプログラ
ム実行を再び無事に始めるため、他のポイントよりプロ
セッサ状態情報をより多く格納することを要求する。
【0008】
【課題を解決するための手段】本発明の一実施の形態に
おいて、マルチプロセッサ構造は、現在実行中のプログ
ラムの変更に許可し、プロセッサが現在のプログラムを
実行する他のプロセッサを要求するようにし、適切なポ
イントで自分をインタラプトする。この適切なポイント
は、文脈変更されたプログラムを無事再実行させるため
に必要なプロセッサ状態情報を減らすことができ、文脈
変更要求を必ず直ちに受け入れない場合もある、現在実
行中のプログラム内のポイントである。
【0009】本発明の他の実施の形態において、マルチ
タスキング環境における文脈のセーブ及び復旧は、プロ
セッサと現在実行中のアプリケーションプログラムが担
当する。このプログラムは例えば、プログラムの実行を
再び無事に開始するために、必要最少量のプロセッサ状
態情報をプログラム内のポイントに相応する多数の位置
内の条件付き文脈変更プログラム命令で表示される。プ
ログラムが、マーク位置に到達し、文脈変更要求の受付
けが検出されると、プログラムはプログラムを無事に再
実行するために必要なプロセッサ状態情報のみを格納し
始める。プログラムは、文脈変更が要求され、これに応
答し文脈変更される時、その間の遅延を減少させること
に充分なほど頻繁に表示する。
【0010】本発明の他の実施の形態において、第1プ
ロセッサ上で第1プログラムを実行する段階と、第2プ
ロセッサから文脈変更要求を受ける段階と、第1プログ
ラムの適切なポイントで、この文脈変更要求に応答する
段階とを含む処理過程において、この適切なポイント
は、プログラムを無事復旧するために最少量のプロセッ
サ状態情報のセーブを必要とする第1プログラム内のす
ぐ次のポイントを表わすプログラム内のマークと関連し
たものである。
【0011】更に他の実施の形態において、本発明のコ
ンピューティングシステムは、複数の散在した文脈変更
マークを備えたプログラムを実行するためのマルチタス
キング環境内の第1プロセッサと、第1プロセッサに接
続され、プロセッサ状態情報を格納する役割を果たす第
1メモリとを含む。このコンピューティングシステムは
また、第1プロセッサに接続された第2メモリと、プロ
セッサがある実行プログラム内のマークのうちいずれか
1つに出会ってから、プログラムの変更要求を検出する
ための、第1プロセッサ上で動作する文脈変更要求検出
部、及び第1メモリ内に位置するプロセッサ状態情報を
第2メモリに格納することによって、検出された文脈変
更要求に応答する第1プロセッサ上で動作する文脈セー
ブモジュールを含む。
【0012】
【発明の実施の形態】以下、添付図面を参照して、本発
明の好ましい実施の形態をより詳しく説明する。尚、図
面全体を通し、同一構成要素には同じ符号を使用する。
【0013】図1は、ホストプロセッサ102とマルチ
メディア信号プロセッサ200を備えたマルチメディア
マルチプロセッサシステム100を示したブロック図で
ある。図1を参照すると、ホストプロセッサ102は、
インテル社のPentiumTMまたはPentiumP
roTMプロセッサのようなx86系プロセッサである。
ホストプロセッサ102は、主システムメモリ104と
キャッシュ105に格納されている命令及びデータに基
づいてプログラムを実行する。
【0014】ホストプロセッサ102は、PCチップセ
ット107とPCIバスのようなシステムバス106を
通してマルチメディア信号プロセッサ200と接続され
る。マルチメディア信号プロセッサ200は、オーディ
オ信号及び電話通信を受信するためのオーディオ及び通
信CODEC108、ビデオ入力信号を受信するビデオ
A/Dコンバータ110、ビデオ出力信号を転送するた
めのビデオD/Aコンバータ112及び、フレームバッ
ファSDRAMメモリ114のような、多種の機能ブロ
ックと接続される。本発明の一実施の形態において、前
述のマルチメディア信号プロセッサ200は、例えば三
星半導体のMSP系列のマルチメディア信号プロセッサ
(三星MSP)等を用いることができる。
【0015】図2は、図1に示したマルチメディアマル
チプロセッサシステム100のマルチメディア信号プロ
セッサ200の内部構造を示したブロック図である。
【0016】同図において、マルチメディア信号プロセ
ッサ200は、ファストバス(fastbus ;FBUS)210
を通し、例えば、32ビットPCIバスインタフェース
222、64ビットSDRAMメモリコントローラ22
6、CODECインタフェース218と8チャンネルD
MAコントローラ220とを備えたASICロジックブ
ロック216、及びホストプロセッサ102からSDR
AMメモリ114へのデータ転送のためのメモリデータ
ムーバ(mover)224とを含む複数個のFBUS周辺装
置に接続される。
【0017】PCIバスインタフェース222はシステ
ムバス106に接続され、例えば33MHzで動作す
る。ASICロジックブロック216は、所望の機能の
遂行のための制御ロジックを提供する。本発明の一実施
の形態において、ASICロジックブロック216は、
種々のアナログCODEC及び特定顧客向けI/O装置
と接続されたインタフェースを含む10Kゲートを提供
する。メモリデータムーバ224は、ホストプロセッサ
102からのDMAデータを、マルチメディア信号プロ
セッサ200と接続されるSDRAMメモリ114に転
送する。
【0018】DSPコア201は、I/Oバス212を
介して、例えば、8254−互換(compatible)プログラ
ム可能なインターバルタイマ(programmable interval
timer)228、16450−互換UART直列ライン2
30、8259−互換プログラム可能なインタラプトコ
ントローラ232、及びビデオビットストリームを処理
するためのビットストリームプロセッサ234とを含む
複数個のI/Oバス装置に接続される。
【0019】DSPコア201は、マルチメディア信号
プロセッサ200の演算のコア部であり、プロセッサ2
02、コプロセッサ204、コアプロセッサインタフェ
ース206、キャッシュサブシステム208、FBUS
210、及びI/Oバス212とを含む。本発明の一実
施の形態において、プロセッサ202は、文脈変更要
求、リアルタイムオペレーティングシステムの駆動、イ
ンタラプト及び例外(exception)処理、入出力装置管
理、ホストプロセッサ102との接続のような一般的な
処理機能を遂行するARM7TMRISC制御プロセッサ
である。プロセッサ202は、40MHzで動作し、コ
プロセッサインタフェース206を介してコプロセッサ
204と接続される。
【0020】プロセッサ202は、命令処理中の通常状
態で発生する例外に応答して例外処理を遂行し、プログ
ラム実行の制御フローが変更されるようにする。
【0021】コプロセッサ204は、マルチメディア信
号プロセッサ200のデジタル信号処理駆動部である。
本発明の一実施の形態において、コプロセッサ204
は、例えば三星MSP系列のベクトルプロセッサ等を適
用可能である。ベクトルプロセッサとしてコプロセッサ
204は、SIMD(Single-Instruction-Multiple-Dat
a)構造を有し、DCT(Discrete Cosine Trasforms)、
FIRフィルタリング、くりこみ(convolution)、ビデ
オ動作評価及び、他のプロセッシングオペレーションの
ような信号処理機能を遂行するものと、並列に多数のデ
ータ要素に作用するパイプラインされた(pipelined)R
ISC駆動部とを含む。
【0022】コプロセッサ204は、多数のデータ要素
が、複数個のベクトル実行ユニットによってベクトル処
理される方式によって、並列に処理されるベクトル演算
を支援する。コプロセッサ204は、スカラー処理及び
組み合わせられたベクトル−スカラー処理の両方とも実
行する。コプロセッサ204の多数のデータ要素は、周
期当り(例えば12.5ns)32個の8/9ビット固
定小数点演算処理、16個の16ビット固定小数点演算
処理、または8個の32ビット固定小数点または浮動小
数点算術処理の比率で計算される576ビットベクトル
にパッキングされる。大部分の32ビットスカラー処理
は1周期当り1命令の比率でパイプラインされ、大部分
の576ビットベクトル処理は2周期当り1命令の比率
でパイプラインされる。ロード(load)及び格納処理は演
算処理と重畳され、別途のロード及び記憶回路により独
立的に遂行される。
【0023】図3を参照すると、コプロセッサ204
は、命令取出ユニット(instructionfetch unit)30
2、命令デコーダ及びイシュア(issuer)304、命令実
行データ経路306及び、ロード及びセーブユニット3
08とを含む4個の機能ブロックを備える。命令取出ユ
ニット302及び命令デコーダ及びイシュア304はコ
プロセッサ204に含まれ、コプロセッサ204がプロ
セッサ202とは別途に動作するようにする。
【0024】命令取出ユニット302は、命令及びサブ
ルーチン命令への分岐(Branch)及びジャンプ(Jump)のよ
うなプロセス制御のフロー命令を先取り(prefetch)す
る。命令取出ユニット302は、現在実行中のストリー
ムのための16列のプリフェッチされた命令と、分岐目
標ストリーム(Branch target stream)のための8列のプ
リフェッチされた命令とを含む。命令取出ユニット30
2は、命令キャッシュから1周期の間8個までの命令を
256ビット幅のバスを通して入力する。
【0025】命令デコーダ及びイシュア304は、コプ
ロセッサ204によって実行されるすべての命令をデコ
ーディングし準備する。デコーダは命令取出ユニット3
02からの入力順序によって1周期の間1命令を処理
し、イシュアは実行手段及び演算数データの能力に従っ
て順序に関係なく大部分の命令を準備する。
【0026】図4を参照すると、命令実行データ経路3
06は、4ポートレジスタファイル402、8個の32
×32並列乗算器(multiplier)404、8個の36ビ
ットFALU406とを含む。レジスタファイル402
は、周期当り2個の読み取り動作と2個の書き込み動作
を支援する。並列乗算器404は、整数または浮動小数
点(floating point)フォーマットで、8個の32ビット
掛け算を行うか、または周期当り16個の16ビット掛
け算、または32個の8ビット掛け算を行う。FALU
406は、周期当り(例えば12.5ns)整数または
浮動小数点フォーマットで、8個の36ビットFALU
処理、16個の16ビットFALU処理、または32個
の8ビット処理を実行する。
【0027】レジスタファイル402は、複数個の特殊
目的レジスタ及び複数個の復帰アドレス(return addres
s)レジスタとを含む。特殊目的レジスタは、ベクトル制
御及び状態レジスタ(VCSR)、ベクトルプログラム
カウンタ(VPC)、ベクトル例外プログラムカウンタ
(vector exception program counter :VEPC)、ベクト
ルインタラプト発生源レジスタ(vector interrupt sour
ce register ;VISRC)、ベクトル及び制御プロセッサ
同期化レジスタ(vector and control processor synchr
onization register;VASYNC)及び多様なカウント、マ
スク、オーバフロー及び区切り点レジスタのような他の
レジスタを含む。VPCは、コプロセッサ204により
実行される、次の命令のアドレスである。
【0028】VISRCは、プロセッサ202にインタ
ラプト発生源を表わす。VISRCの適切なビットは例
外検出によってハードウェアで設定される。このビット
は、コプロセッサ204の再実行前に、ソフトウェアに
よってリセットされる。VISRC内のある設定ビット
は、コプロセッサ204がアイドル状態(idle state)
(VP_IDLE)に入るようにする。該当インタラプ
トイネーブルビットが、コプロセッサインタフェース2
06内のVIMSKレジスタの内に設定されると、IR
Qインタラプトはプロセッサ202に信号で知らせる。
【0029】コプロセッサ204は、正確な例外と不正
確な例外とを含む例外条件を検出する。正確な例外は、
コプロセッサ204により検出され、間違った命令の前
に報告される。正確な例外は、命令アドレス区切り点例
外、データアドレス区切り点例外、無効命令例外、単一
ステップ例外、復旧アドレススタックオーバフロー例
外、復旧アドレススタックアンダフロー例外、VCIN
T例外、及びVCJOIN例外を含む。コプロセッサ2
04の不正確な例外は、間違った命令へのプログラム順
序上の後方の定まらない数の命令を実行してから検出さ
れ報告される。不正確な例外は、無効命令アドレス例
外、無効データアドレス例外、整列されていないデータ
アクセス例外、整数オーバフロー例外、浮動小数点オー
バフロー例外、浮動小数点無効演算数例外、ゼロによる
浮動小数点割り算例外、及びゼロによる整数割り算例外
とを含む。
【0030】ベクトルインタラプト命令レジスタ(VI
INS)は、命令が拡張され、プロセッサ202をイン
タラプトする時、コプロセッサVCINTまたはVCJ
OIN命令でアップデートされる。
【0031】プロセッサ202は、コプロセッサ204
の駆動を開始する。
【0032】ベクトルインタラプトマスクレジスタ(V
IMSK)は、コプロセッサ204内で発生する例外を
プロセッサ202に報告することを制御する。VIMS
K内のビットは、ベクトルインタラプト発生源レジスタ
(VISRC)内の該当ビットによって設定されると、
例外をイネーブルさせ、プロセッサ202をインタラプ
トする。VISRCレジスタは、複数個の例外及び命令
中のどれが発生源であるかを表わす、複数個のビットを
含む。
【0033】VIMSKレジスタは、データアドレス区
切り点インタラプトイネーブル(data address breakpoi
nt interrupt enable ;DABE)、命令アドレス区切り点
インタラプトイネーブル(IABE)、及び単一ステッ
プインタラプトイネーブル(single-step interrupt ena
ble ;SSTPE)を含む。VIMSKは浮動小数点オーバフ
ロー(FOVE)、無効演算数(FINVE)及び、ゼ
ロによる割り算(divide-by-zero)(FDIVE)インタ
ラプトイネーブルビット、及び整数オーバフロー(IO
VE)及び、ゼロによる割り算(IDIVE)インタラ
プトイネーブルを制御する。VIMSKはまた、VCI
NTインタラプトイネーブル(VIE)、VCJOIN
インタラプトイネーブル(VJE)及び、文脈変更イネ
ーブル(CSE)を制御する。
【0034】コプロセッサ204は、プロセッサ202
に信号を送ることにより、プロセッサ202と対話を行
う。特に、コプロセッサ204は、コプロセッサ204
が同期される命令を実行したことを表わす、使用者拡張
されたレジスタを通して間接的にプロセッサ202に信
号を送る。コプロセッサ204はコプロセッサ204が
例外を停止させ、VP_IDLE状態に入ったことを表
わすインタラプト要求を通し、直接にプロセッサ202
に信号を送る。
【0035】コプロセッサ204は、プロセッサ202
への信号転送のため、2個の命令を実行する。VCJO
IN命令(VCJOINn)は、プロセッサ202と条
件付き結合され、コプロセッサ204が停止し、VP_
IDLE状態に入るようにする。コプロセッサ204内
のプログラムカウンタ(図示せず)は、VCJOIN命
令によって命令をアドレスする。コプロセッサ204に
より実行されるVCJOIN命令は、制御フロークラス
に分類される。制御フロー命令は、ブランチ、減少及び
ブランチ、ジャンプ、サブルーチンからの復帰、文脈変
更及び、バリア命令のような多様な条件的命令を含む。
【0036】再び図2を参照すると、キャッシュサブシ
ステム208は、データキャッシュ236(例えば、5
KB)、命令キャッシュ238(例えば、2KB)、及
びキャッシュROM(例えば、16KB)とを含み、コ
プロセッサ204の速度(80MHz)と同一速度で動
作する。本発明の一実施の形態において、キャッシュサ
ブシステム208は、プロセッサ202のための1キロ
バイトの命令格納領域及び、1キロバイトのデータ格納
領域と、コプロセッサ204のための1キロバイトの命
令格納領域と、4キロバイトのデータ格納領域、及びプ
ロセッサ202とコプロセッサ204のための共有16
キロバイトの集積化された命令及びデータキャッシュR
OM240とを備えている。
【0037】キャッシュサブシステム208は、32ビ
ットデータバスを通しプロセッサ202と接続され、1
28ビットデータバスを通しコプロセッサ204と接続
される。キャッシュROM240は、μROM初期化ソ
フトウェア、セルフテスト診断ソフトウェア、多様なシ
ステム管理ソフトウェア、ライブラリルーチン及び、選
択された命令及びデータ常数のためのキャッシュを含
む。特に、キャッシュROM240は、プロセッサ20
2のための命令例外処理ハンドラ及び入出力装置インタ
ラプト処理ハンドラ(0、1、2、3)を備えている。
またキャッシュROM240は、プロセッサ202内で
実行されるベクトルプロセッサインタラプト処理ハンド
ラと、ベクトルプロセッサ区切り点例外処理ハンドラと
を含む。
【0038】図5はマルチメディア信号プロセッサ20
0のソフトウェア及びファームウェア構造500を示し
たもので、マルチメディア信号プロセッサ200は、マ
ルチメディア信号プロセッサ200上で実行されるMS
Pシステム要素ソフトウェア502と、ホストプロセッ
サ102上で実行されるPC応用及びオペレーティング
システムソフトウェア508とを含む。マルチメディア
信号プロセッサ200は、コプロセッサ204上で実行
される、ベクトル化されたDSPファームウェアライブ
ラリと、プロセッサ202上で実行されるシステム管理
機能ブロック506とを含むファームウェアにより制御
される。
【0039】前述のベクトル化されたDSPファームウ
ェアライブラリ504及びシステム管理機能ブロック5
06は、MSPシステム要素ソフトウェア502内に含
まれる。前述のソフトウェア及びファームウェア構造5
00は、ホスト応用制御動作から信号処理機能を分離
し、ソフトウェア開発を単純化させ、ソフトウェア設計
関係を向上させ、応用開発及び維持費用を減少させる。
【0040】MSPシステム要素ソフトウェア502
は、プロセッサ202上で独自的に実行され、MSPリ
アルタイムオペレーティングシステムコア部510、マ
ルチメディアライブラリモジュール512、システム管
理機能ブロック506及び、ベクトル化されたDSPフ
ァームウェアライブラリ504を含む。MSPリアルタ
イムコア部510は、マイクロソフトのMMOSAリア
ルタイムカーネル(Kernel)のサブセットであ
り、ホストプロセッサ102、資源管理、I/O装置駆
動及び、大部分のインタラプト及び例外処理への接続を
担う。MSPリアルタイムコア部510は、ホストプロ
セッサ102上で実行されるWindowsTM及びWi
ndowsNTTMソフトウェアとの接続のためのソフト
ウェアを含む。
【0041】MSPリアルタイムコア部510は、ホス
トプロセッサ102から所定のアプリケーションファー
ムウェアを選択しダウンロードするためのソフトウェ
ア、プロセッサ202とベクトルプロセッサ204内で
の実行のためのタスク準備のためのソフトウェアと、メ
モリ及びI/O装置を含むマルチメディア信号プロセッ
サ200のシステム資源を管理するためのソフトウェア
とを含む。MSPリアルタイムコア部510は、またマ
ルチメディア信号プロセッサ200のタスク間の同期接
続のためのソフトウェアと、MSP関連インタラプト、
例外及び状態条件を報告するためのソフトウェアとを含
む。
【0042】ベクトル化されたDSPファームウェアラ
イブラリ504は、すべてのデジタル信号処理機能を遂
行する。ベクトル化されたDSPファームウェアライブ
ラリ504は、またはプロセッサ202によってベクト
ルプロセッサ204に発行されたコプロセッサインタラ
プト、またはベクトルプロセッサ204内で発生される
ハードウェアスタックオーバフロー例外のような特別な
割込みを制御する。
【0043】マルチメディアライブラリモジュール51
2は、データ通信、MPEGビデオ及びオーディオ、ス
ピーチコーディング及び合成、サウンドブラスタ−互換
オーディオなどを含む通信処理機能を遂行する。MSP
リアルタイムコア部510は、マルチメディア信号プロ
セッサ200上で実行されるマルチメディア応用を容易
にする、堅実なリアルタイムマルチタスキングのプリエ
ンプティブ(pre-emptive)オペレーティングシステムで
ある。
【0044】ホストプロセッサ102内で実行されるP
Cアプリケーション及びオペレーティングシステムソフ
トウェア508は、システムバス106を通してMSP
制御及び状態レジスタへの読み取り及び書き込み動作、
及びシステムメモリ104とマルチメディア信号プロセ
ッサ200に常駐する共有データ構造への書き込みを遂
行することによって、マルチメディア信号プロセッサ2
00を制御する。
【0045】MSPプログラム実行は、第1実行ストリ
ームを遂行するプロセッサ202から始まる。プロセッ
サ202は、ベクトルプロセッサ204内の第2の独立
的な実行ストリームを開始することができる。プロセッ
サ202とベクトルプロセッサ204の動作は、STA
RTVP、INTVP及びTESTVP命令、及びVJ
OIN及びVINT命令を含む、ベクトルプロセッサ2
04内で実行される、特殊命令を含むプロセッサ202
内で処理される特定のコプロセッサ命令を通して同期さ
れる。プロセッサ202とベクトルプロセッサ204間
のデータ転送は、プロセッサ202内で実行されるデー
タ移動命令によって実行される。
【0046】コプロセッサ204は、プロセッサ202
に信号を送ることによって、プロセッサ202との対話
を行う。特に、コプロセッサ204は、コプロセッサ2
04が同期される命令を実行したことを表わす使用者拡
張されたレジスタを通し、間接的にプロセッサ202に
信号を送る。コプロセッサ204は、コプロセッサ20
4が例外を停止させ、VP_IDLE状態に入ったこと
を表わすインタラプト要求を通し、直接にプロセッサ2
02に信号を送る。コプロセッサ204は、プロセッサ
202への信号転送のために2個の命令を実行する。V
CJOIN命令と、プロセッサ202に条件的に割込む
VCINT命令(VCJOINn)は、コプロセッサ2
04を停止し、VP_IDLE状態に入るようにする。
VCINT及びVCJOIN命令は、制御フロークラス
に分類されるコプロセッサ204によって実行される命
令である。この制御フロー命令は、ブランチ、減分及び
ブランチ、ジャンプ、サブルーチンからの復帰、文脈変
更、及びバリア命令のような多様な条件付き命令を含
む。
【0047】マルチメディア信号プロセッサ200は、
連続的なプログラム実行と関連したマルチタスキング動
作を遂行することができる。プログラム間の文脈変更に
必要な時間は、文脈変更されるプログラムを無事に復旧
することに必要なすべてのプロセッサ状態情報を格納す
る従来の格納に比べて、関連するプロセッサ状態情報を
格納することによりプロセッサ状態情報量を減少させる
ことができる。文脈が変更される間、格納されたプロセ
ッサ情報量を減少させることによって、以下に説明する
通り、資源をより効率的に利用することができる。
【0048】図6は、マルチメディアマルチプロセッサ
システム100に採用されたもので、例えば三星MSP
系列のマルチメディア信号プロセッサから選択されたマ
ルチメディア信号プロセッサ200を利用する効率的な
文脈変更及び、プログラム復旧プロセスフロー600
(文脈セーブ/復旧プロセスフロー600)の一実施の
形態を示したものである。文脈セーブ/復旧プロセスフ
ロー600は、プログラム実行ブロック602から始ま
る。プログラム実行ブロック602において、コプロセ
ッサ204(図2参照)は、アプリケーションプログラ
ムのようなプログラムを実行する。このアプリケーショ
ンプログラムは、アプリケーションプログラム全般にわ
たって、プログラマーによって散在されたマークを含む
ことによって、このマークが大略規則的に表れ得るよう
にする。
【0049】この実施の形態において、このマークは、
VCCSというコプロセッサ204の条件付き文脈変更
命令である。アプリケーションプログラムが実行される
間、あるポイントでコプロセッサ204は、現在実行中
のプログラム内のこのポイントと関連したプロセッサ状
態情報を含む。アプリケーションプログラム内の何ヶ所
のポイントでは、文脈変更後でアプリケーションプログ
ラムを無事に復旧することに必要なプロセッサ状態情報
が他のポイントより割合少ない。文脈変更を通し、最少
量のプロセッサ状態情報の保存を必要とするアプリケー
ションプログラム内のこのような“減少されたプロセッ
サ状態”ポイントを認知するプログラムマーは、アプリ
ケーションプログラム内のこれの減少されたプロセッサ
状態ポイントにVCCS命令を下ろす。しかし、お互い
に出会ったVCCS命令間の間隔は、文脈変更動作を大
きく遅延させないように、大きくないものが好ましい。
この間隔は、プログラマーの判断、アプリケーションプ
ログラム及びコプロセッサ204のクロック速度により
決定される。一実施の形態によるこの間隔は、要求され
た文脈変更と要求に対する応答の間に、2μSEC以下
の遅延を発生させる。
【0050】文脈変更後、プログラムを無事に再実行さ
せることに必要なプロセッサ状態情報量を減少させるこ
とによって、プロセッサ状態情報の潜在的な大きさが非
常に大きい場合、特にプロセッサ動作の利得を大きくす
ることができる。例えば、三星MSP系列のあるプロセ
ッサは、プロセッサ状態情報に割当てられた最も多い量
のメモリ格納領域を有する典型的な構造である。三星M
SPは、7キロバイト以上のプロセッサ状態情報を含
み、64個の288ビットベクトルレジスタ、80個以
上の32ビットスカラーレジスタ、及び最大4キロバイ
トのスクラッチパッドメモリを含む。三星MSPのよう
な構造における文脈変更及びプログラムの復旧が遂行さ
れる間のプロセッサ状態情報の転送量の減少と関連して
性能を向上できる。
【0051】アプリケーションプログラム内の減少され
たプロセッサ状態ポイントの一例は、50個の引数(arg
ument)の和を決定するADD命令と関連がある。アプリ
ケーションプログラムが引数の和を決定する前に文脈変
更されると、アプリケーションプログラムを復旧するこ
とに必要なプロセッサ状態情報は、50個の引数のすべ
てを必ず持たなければならばい。しかし、ADD命令が
終了され前記の和が決定されると、この和のみがプロセ
ッサ状態情報の一部分として含まれなければならない。
従って、プログラムへの復帰上のプログラム再実行のた
めに必要なプロセッサ状態情報量は、すべての利用可能
なプロセッサ状態情報のセーブと関連して減少される。
【0052】コプロセッサ204条件付き文脈変更命令
であるVCCS命令は、50個の引数の和の決定による
ポイントでアプリケーションプログラム内に位置する。
これは、無事に文脈を変更し、アプリケーションプログ
ラムを復旧するために必要なプロセッサ状態情報を減少
させるためのアプリケーションプログラム内の適切なポ
イントの一例である。アプリケーションプログラム内の
他の多くのポイントが、文脈変更及びこれの後に続くプ
ログラムの復旧前に、プロセッサ状態情報格納量を減少
させるために選択され得ることは、当業者には明らかな
ことである。
【0053】図7を参照すると、アプリケーションプロ
グラムの例示部分700は、散在しているVCCS命令
702を含む。VCCS命令702は、アプリケーショ
ンプログラム内で無事にまた正確に文脈変更が可能とな
るよう、必要最少量のプロセッサ状態情報記憶を所定の
位置に規則的に散在したものである。
【0054】再び図6を参照すると、プログラム実行ブ
ロック602内でアプリケーションプログラムが実行さ
れる間、32ビットVCCS命令は、文脈変更命令ブロ
ック604に示したように、適切なポイントで出会うこ
とになる。文脈変更要求ブロック606に進行し、VC
CS命令で、コプロセッサ204は、プロセッサ202
が現在実行中のアプリケーションプログラムを文脈変更
し、他のプログラムに代替することを要求したか否かを
決定するようにする。文脈変更が要求されなかったら、
文脈セーブ/復旧プロセスフロー600は、プログラム
実行ブロック602に戻って出会ったVCCS命令に従
うポイントから、アプリケーションプログラムを実行し
続ける。
【0055】文脈変更を要求するためプロセッサ202
は、コプロセッサインタフェース206内に位置する、
VIMSKレジスタという32ビットベクトルプロセッ
サインタラプトマスクレジスタ208で書き込み動作を
行う。特に、プロセッサ202は、CSEビットに1を
書くことによって、VIMSKレジスタ214のCSE
或いは文脈変更イネーブルビットのビットをゼロに設定
する。
【0056】表1は三星MSPベクトルプロセッサで使
用されるVCCS命令フォーマットを示している。
【0057】
【表1】
【0058】VCCSフォーマットは、最上位ビット位
置内の111101ビットを含み、最下位23ビット内
にオフセットフィールド(offset field)を含む。このオ
フセットフィールドは、文脈変更が要求された時、コプ
ロセッサ204がVCCS命令の無事終了によって分岐
される文脈セーブサブルーチンの位置を認知する。ビッ
ト(25:23)は、VCCS命令によって使用されな
い。VCCS命令のアセンブラ構文(assembler syntax)
はVCCS#Offsetである。
【0059】文脈変更要求ブロック606を参照する
と、プログラム実行ブロック602において、現在実行
中のアプリケーションプログラムを文脈変更し、他のプ
ログラムに交替することをプロセッサ202が要求した
か否かを決定するため、前回のVCCS命令によって、
コプロセッサ204がVIMSKレジスタ214を読み
取ることになる。VCCS命令が例外を起こさないと仮
定すると、VIMSKレジスタ214のCSEビットが
1に設定される。そして、プログラム実行ブロック60
2内のアプリケーションプログラムの復帰アドレスは、
文脈変更されるプログラムと唯一に関連したソフト復帰
アドレススタックに格納される。アプリケーションプロ
グラムの現在アドレスは、ベクトルプログラムカウンタ
(VPC)内に位置する。復帰アドレスはVPC+4で
ある。
【0060】コプロセッサ204はVCCS命令に出会
うまで、プロセッサ202から要求された文脈変更を確
認しないことに注目すべきである。結果的に、プログラ
マーは、実行中のプログラムが文脈変更され得るポイン
トを制御することができる。また、要求された文脈変更
と、これによる応答との間に遅延が発生するとしても、
文脈の変更要求、検出及び応答遅延が発生される間、ア
プリケーションプログラムが継続して実行されるので、
プログラム実行に際して問題が発生されない。次の擬似
コード(pseudocode)はVCCSの作用を示したものであ
る。 If(VIMSK<CSE>==1){ if(VSP<4>>15){ VISRC<RASO>=1;signal processor 202 with RASO exception; VP_STATE=VP_IDLE; }else{ RSTACK[VSP<3:0> =VPC+4 ; VSP<4:0>=VSP<4:0>+1; VPC =VPC+sex(Offset<22:0>*4) ; } }else VPC=VPC+4 ; 文脈変更要求ブロック606を参照すると、VCCS命
令によって、コプロセッサ204がVIMSKレジスタ
214のCSEビットが設定されたか否かを決定する。
ビットが設定されていなければ、プロセッサ202が文
脈変更を要求していないことを示し、コプロセッサ20
4のプログラムカウンタVPCは次の命令まで増加し、
プログラム実行ブロック602への復帰が実行される。
プロセッサ202が文脈変更を要求したら、コプロセッ
サ204は、アプリケーションプログラムと関連した5
ビットベクトルスタックポインタ(VSP)のビット4
個を検査し、VCCS命令の実行がスタックオーバフロ
ーをもたらすかどうかを決定する。
【0061】スタックオーバフローが発生すると、ベク
トルインタラプト発生源レジスタ(VISRC)の復帰
アドレススタックオーバフロー例外ビットは1に設定さ
れ、コプロセッサ204の状態(VP_STATE)は
アイドル状態(VP_IDLE)となる。スタックオー
バフローが発生しない場合、文脈セーブ/復旧プロセス
フロー600が進行され、復帰アドレスブロック608
を格納する。そしてコプロセッサ204は、プログラム
実行ブロック602内で実行されるアプリケーションプ
ログラムの復帰アドレスを格納し、ソフトスタックポイ
ンタを増加させる。それから、VPCはVCCSオフセ
ットフィールドにより表示される符号拡張されたアドレ
スにロードされる。VPCにこの時格納されたアドレス
は、文脈セーブサブルーチンブロック612で示した文
脈セーブサブルーチンのアドレスである。
【0062】コプロセッサ204は、文脈セーブサブル
ーチンブロック610への実行ブランチに示す通り、V
PC内の文脈セーブサブルーチンアドレスを利用し、文
脈セーブサブルーチンに分岐される。文脈セーブサブル
ーチン612は、プログラム実行ブロック602内で実
行されるアプリケーションプログラムのプログラマーに
より書かれる。結果的に、プログラマーは文脈変更され
たアプリケーションプログラムを無事再実行するために
格納される必要最少量のプロセッサ状態情報を認知する
ようになる。最少プロセッサ状態情報サブブロック61
4に示す通り、文脈セーブサブルーチン612は、例え
ば文脈変更されたプログラムを復旧するために必要とな
る、レジスタとスクラッチパッドメモリに存在する必要
な情報のみを格納する。
【0063】文脈復旧サブルーチンサブブロック616
の格納位置前に、コプロセッサ204はVCJOINと
いうプロセッサ202タスク命令の32ビット条件付き
結合(Conditional Join)を実行することによって、文脈
セーブサブルーチン612を終了する。
【0064】表2は、三星MSPベクトルプロセッサで
使用されるVCJOIN命令フォーマットを示したもの
である。
【0065】
【表2】
【0066】VCJOINフォーマットは、最上位ビッ
ト位置内に100110ビットを含んでおり、最下位2
3ビット内にビット(25:23)内の条件フィールド
(condition field)及びオフセットフィールドを含む。
この条件フィールドは、無条件的にプロセッサ202を
インタラプトするために設定される。オフセットフィー
ルドは、文脈変更プログラムの再実行によって、コプロ
セッサ204が実行される文脈復旧サブルーチン位置の
アドレスを表わす。VCJOIN命令のアセンブラ構文
は、VCJOIN.cond#Offsetである。
【0067】次の擬似コードは、VCJOINの作用を
示したものである。 文脈復旧サブルーチンサブブロック616の格納位置を
参照すると、コプロセッサ204によるVCJOIN.
un#Offset命令の実行により文脈復旧サブルー
チン628の位置がセーブされ、プロセッサ202をイ
ンタラプトする。これによって、プロセッサ202は後
続プログラムを実行するため、コプロセッサ204をセ
ットアップする。文脈復旧サブルーチンサブブロック6
16の格納位置において、VCJOINの条件は無条件
的に設定され、VIMSKレジスタ214のVCJOI
Nインタラプトイネーブル(VJE)ビットは1に設定
される。VIMSKレジスタ214のVJEビットは5
である。文脈復旧サブルーチンサブブロック616の格
納位置を参照すると、VCJOIN命令の23ビットオ
フセットフィールドは、文脈復旧サブルーチン628の
位置を表わすために設定される。
【0068】インタラプトプロセッササブブロック61
8内でVCJOIN命令が、コプロセッサ204により
実行される時、コプロセッサ204はVCJOIN命令
の条件フィールドを確認し、条件フィールドの無条件付
き状態を確証する。続いて、コプロセッサ204は、3
2ビットのベクトルインタラプト発生源レジスタ(VI
SRC)の例外中のビット(VJP)を1に設定する。
VJPビットはVISRCレジスタのビット5である。
ベクトルインタラプト命令レジスタ1(VIINS)
は、VCJOIN命令が実行され、プロセッサ202を
インタラプトするので、VCJOIN命令でアップデー
トされる。
【0069】現在のVPCは、ベクトル例外プログラム
カウンタ(VEPC)にセーブされる。VEPCは、一
番最近の例外を招来した命令のアドレスを規定する。V
CJOIN命令が実行し続けられることによって、VI
MSKレジスタ214のVJEビットは評価され、1に
設定されるように決定される。VJEビットの設定によ
ってプロセッサ202がIRQインタラプトされ、VJ
Pビットの設定によりコプロセッサ204はIDLE状
態に入るようになる。
【0070】文脈セーブ/復旧プロセスフロー600
は、文脈セーブサブルーチンブロック612を終了後、
プロセッサ割込み処理ブロック620に進む。
【0071】インタラプトの開始されたVCJOINを
処理してから、次のプログラム文脈変更決定ブロック6
22に示す通り、プロセッサ202は実行される次のプ
ログラムが“新しい”プログラム、すなわち、それ以前
に文脈変更されなかったり、または変更されないプログ
ラムであるかを決定する。マルチメディア信号プロセッ
サ200オペレーティングシステム(図5参照)は、プ
ログラムのトラックを維持し、このプログラムが事前に
文脈変更されたか否かを決定する。コプロセッサ204
により実行される次のプログラムが“新しい”プログラ
ムであれば、文脈セーブ/復旧プロセスフロー600
は、新しいプログラムブロック624を実行するため、
コプロセッサのセットアップを進める。
【0072】プロセッサ202は、コプロセッサ204
をセットアップし、“新しい”プログラムを実行させ
る。そして、文脈セーブ/復旧プロセスフロー600
は、“新しい”プログラムが実行されるプログラム実行
ブロック602に戻る。
【0073】次のプログラム文脈変更決定ブロック62
2に戻って、コプロセッサ204は、次のプログラムが
既に文脈変更された場合、文脈復旧サブルーチンブロッ
ク626へのブランチに入る。プロセッサ202は、そ
れからコプロセッサ204のVPCを上述のごとく文脈
復旧サブルーチンサブブロック616の格納位置内での
VCJOIN命令が実行される間、格納されていた文脈
復旧サブルーチン628のアドレスをロードする。そし
て文脈セーブ/復旧プロセスフロー600は、文脈復旧
サブルーチン628に分岐される。
【0074】文脈復旧サブルーチン628は、現在文脈
変更されるアプリケーションプログラムのプログラマー
によって書かれる。結果として、プログラマーは文脈変
更を無事再実行する前、文脈セーブサブルーチン612
により事前に格納され、現在はアプリケーションプログ
ラム内で文脈変更された最少量のプロセッサ状態情報の
位置が分かるようになる。文脈セーブ/復旧プロセスフ
ロー600は、適切なコプロセッサ204のメモリ位
置、例えば上述したレジスタ及びスクラッチメモリ内に
既に格納された最少量のプロセッサ状態情報を、コプロ
セッサ204が読み取る最少プロセッサ状態情報サブブ
ロック630をロードするために進む。
【0075】アプリケーションプログラムでの文脈変更
を無事続行するために、必要なプロセッサ状態情報をロ
ードすると、文脈復旧サブルーチン628は、文脈復旧
サブルーチンサブブロック616の格納位置内に既に格
納されている正確なプログラム位置でアプリケーション
プログラムが文脈変更を実行できるようコプロセッサを
準備する。このアプリケーションプログラムの位置を復
旧するために、コプロセッサ204は、文脈復旧サブル
ーチン628を終了するサブルーチンからの条件付き復
帰(VCRSR)命令を実行する。表3は、三星MSP
ベクトルプロセッサで使用されるVCJOIN命令フォ
ーマットを示したものである。
【0076】
【表3】
【0077】VCRSRフォーマットは、最上位ビット
位置内に100101ビットを含み、ビット(25:2
3)内に条件フィールドを含む。最下位23ビットは使
用されず、いずれの値にも設定され得る。この条件フィ
ールドは、無条件的にプロセッサ202をインタラプト
するように設定される。VCRSR命令のアセンブラ構
文は、VCRSR.condである。
【0078】次の擬似コードは、VCRSRの作用を示
したものである。 If(Cond=un){ if(VSP<4:0>==0){ VISRC<RASU>=1; signal processor 202 with RASU exception; VP_STATE=VP_IDLE; }else{ VSP<4:0>=VSP<4:0>-1; VPC=RSTACK VSP<3:0> ; VPC<1:0>=b'00; } }else VPC=VPC+4; プログラムブロック632内の、文脈変更のロード復帰
アドレスを参照すると、VCRSR.un命令の実行に
より、コプロセッサ204が格納復帰アドレスブロック
608内に既に格納されている位置から、プログラム内
の文脈変更の実行を更に始める。VCRSR.un命令
が実行される間、コプロセッサ204は、無条件付きブ
ランチコードを含むVCRSR命令の条件フィールドを
調査することによって、無条件付きブランチが要求され
たか否かを決定する。VCRSR命令の実行によって調
査されたVSPは、文脈変更中のプログラムと唯一に関
連したソフトスタックポインタである。次いで、コプロ
セッサ204は、VSPを調査し、VSPが最下位ビッ
ト位置を指しているか否かを決定する。VSPが最下位
の位置を指していると、VISRCレジスタのRASU
ビットは1に設定される。RASUビットは、復帰アド
レススタックアンダーフロー(Return Address Stack Un
derflow)例外ビットであり、このように設定されると、
プロセッサ202へと例外が存在するという信号を送
る。この時、コプロセッサ204はアイドル状態に入る
ようになる。VSPが最下位位置を指していなければ、
コプロセッサ204はVSPを1ずつ減少させ、この選
択されたVSP位置に格納されたアドレスにVPCをロ
ードする。このVSP位置は、格納復帰アドレスブロッ
ク608に既に格納されている復帰アドレスを含む。V
PC<1:0>=b’00段階は、VPCの最下位2ビ
ットが0にロードされることを確実にするものである。
【0079】復帰アドレスがVPC内にロードされた
後、文脈変更プロセスフロー600は、プログラム内の
文脈変更の最初の実行命令であるプログラム実行ブロッ
ク602に戻る。文脈変更プロセスフロー600は、プ
ログラム実行が終了されるまで反復される。
【0080】以上述べたように、マルチタスキングマル
チプロセッサ環境における文脈変更の効率性は、文脈変
更プロセスフロー600によって向上する。プログラム
の文脈変更が起こる間、プロセッサ状態情報の最少量を
格納することのみで、コプロセッサ204の時間を他の
動作に利用し得る。また、最少量のプロセッサ状態情報
のみを復旧することによって、プログラムが効率的に文
脈変更できるようになる。このような時間節約は、文脈
変更動作が遂行される間蓄積される。
【0081】本発明を特定の好ましい実施の形態に関連
して図示し説明したが、本発明は前記の実施の形態に限
定されることではない。例えば、特定のハードウェア及
びソフトウェアの実施の形態は例示的なものであり、他
の多くのシステム構造及び/またはソフトウェア実施の
形態により、上述した文脈変更及び復旧特徴を実現する
ことができる。また、文脈変更及び復旧が、2個以上の
タスクと関連したマルチタスキング環境で使用されるこ
とは、本発明の属する技術分野で通常の知識を有する者
には明らかなものである。従って、本願発明の特許請求
の範囲により示された本発明の精神や範囲を離脱しない
限度内での本発明の多様な改造及び修正は本発明の範疇
に含まれる。
【図面の簡単な説明】
【図1】本発明の一実施の形態によるマルチメディアマ
ルチプロセッサシステムの一実施の形態を示したブロッ
ク図。
【図2】図1に示したマルチメディアマルチプロセッサ
システムのマルチメディア信号プロセッサを示したブロ
ック図。
【図3】図2に示したマルチメディア信号プロセッサに
おけるコプロセッサ(co-processor)を示したブロック
図。
【図4】図3に示したコプロセッサのコプロセッサ実行
データ経路を示したブロック図。
【図5】マルチメディア信号プロセッサのファームウェ
ア構造を示したブロック図。
【図6】マルチプロセッサ構造における効率的なプログ
ラム文脈セーブ及び、プログラム復旧と関連した動作を
示したフロー図。
【図7】散在している条件付き文脈変更命令を有する、
実行可能なプログラムのフロー部分を示した図。
【符号の説明】
100 マルチプロセッサシステム 102 ホストプロセッサ 104 主システムメモリ 106 システムバス 107 PCチップセット 110 ビデオA/Dコンバータ 112 ビデオD/Aコンバータ 114 SDRAMメモリ 200 マルチメディア信号プロセッサ 201 DSPコア 202 プロセッサ 204 コプロセッサ 206 コプロセッサインタフェース 208 キャッシュサブシステム 210 FBUS 212 I/OBUS 216 ASICロジックブロック 220 DMAコントローラ 222 PCIバスインタフェース 224 メモリデータムーバ 226 SDRAMメモリコントローラ 228 インターバルタイマ 230 互換UART直列ライン 232 インタラプトコントローラ 234 ビットストリームプロセッサ 302 命令取出ユニット 304 イシュア 306 データ経路 308 セーブユニット 402 レジスタファイル 404 乗算器 406 FALU
───────────────────────────────────────────────────── フロントページの続き (72)発明者 リ トロン ギュエン アメリカ合衆国 カリフォルニア州 95030 モンテセレノ ダニエルプレイス 15095 (72)発明者 ヒョン チュル パク アメリカ合衆国 カリフォルニア州 95014 クパーチーノ #4 パークウッ ドドライブ 10140 (72)発明者 ジェリー ヴァン エイケン アメリカ合衆国 カリフォルニア州 95014 クパーチーノ #4 パークウッ ドドライブ 10140 (72)発明者 アレクサンドロ フォリン アメリカ合衆国 カリフォルニア州 95014 クパーチーノ #4 パークウッ ドドライブ 10140 (72)発明者 アンドリュー ラッフマン アメリカ合衆国 カリフォルニア州 95014 クパーチーノ #4 パークウッ ドドライブ 10140

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 第1プロセッサ上で第1プログラムを実
    行する段階と、 第2プロセッサから文脈変更要求を受け入れる段階と、 前記第1プログラム内の適切なポイントで前記文脈変更
    要求に応答する段階とを含み、前記適切なポイントは前
    記プログラム内の表示と関連し、そのプログラムは前記
    第1プログラムのすぐ次のポイントを示し、前記プログ
    ラムを無事復旧するためのプロセッサ状態情報記憶を必
    要最少量としたことを特徴とするマルチタスキング処理
    システム環境における効率的な文脈セーブ及び復旧方
    法。
  2. 【請求項2】 第1プログラムを無事復旧するために、
    前記第1のプログラム中のプロセッサ状態情報記憶の必
    要最少量の位置に複数の表示を散在させる段階が更に含
    まれることを特徴とする請求項1記載のマルチタスキン
    グ処理システム環境における効率的な文脈セーブ及び復
    旧方法。
  3. 【請求項3】 前記適切なポイントで前記第1プログラ
    ムの状態に相応するプロセッサ状態情報をセーブする段
    階と、 前記第1プログラムを変える段階と、 前記第1プロセッサ上で第2プログラムを実行する段階
    と、 前記第2プログラムを変える段階と、 最少量のプロセス情報を用いて前記第1プログラムを復
    旧する段階とが更に含まれることを特徴とする請求項1
    記載のマルチタスキング処理システム環境における効率
    的な文脈セーブ及び復旧方法。
  4. 【請求項4】 前記文脈変更要求に応答する段階が、 前記適切なポイントで、前記第1プログラムの状態に相
    応するプロセッサ状態情報をセーブする段階と、 前記第1プログラムを正確に復旧するために、文脈復旧
    ルーチンの位置をセーブする段階とを含むことを特徴と
    する請求項1記載のマルチタスキング処理システム環境
    における効率的な文脈セーブ及び復旧方法。
  5. 【請求項5】 前記第1プログラムを実行する段階が、 マルチメディアプロセッサシステム内のマルチメディア
    信号プロセッサのベクトルプロセッサ上で、前記第1プ
    ログラムを実行する段階を含むことを特徴とする請求項
    1記載のマルチタスキング処理システム環境における効
    率的な文脈セーブ及び復旧方法。
  6. 【請求項6】 複数個のマルチメディア装置からデータ
    が供給される段階を更に含み、前記第1プログラムを実
    行する段階が、前記提供されたデータを処理する段階を
    含むことを特徴とする請求項1記載のマルチタスキング
    処理システム環境における効率的な文脈セーブ及び復旧
    方法。
  7. 【請求項7】 前記文脈変更要求を受け入れる段階が、
    前記第2プロセッサにより設定される文脈変更イネーブ
    ルフィールドを備えたレジスタを読み取る段階を含むこ
    とを特徴とする請求項1記載のマルチタスキング処理シ
    ステム環境における効率的な文脈セーブ及び復旧方法。
  8. 【請求項8】 前記文脈変更要求を受け入れた後、前記
    第1プログラムを実行し続ける段階が更に含まれ、 前記文脈変更要求に応答する段階が、 前記適切なポイントで前記第1プログラム内の表示と会
    う段階と、 前記第1プロセッサに割込みを行う段階と、 前記第1プログラム内のマークと会うことによって前記
    第1プロセッサで前記文脈変更要求を読み取る段階と、 前記第1プログラムの復帰アドレスを格納する段階と、 前記第1プログラムの無事復旧のために必要な最少量の
    プロセッサ状態情報を格納する段階と、 前記第1プロセッサが利用可能であることを第2プロセ
    ッサに通知して第2プログラムが実行されるようにする
    段階と、を含むことを特徴とする請求項1記載のマルチ
    タスキング処理システム環境における効率的な文脈セー
    ブ及び復旧方法。
  9. 【請求項9】 前記マークは条件付き文脈変更命令であ
    ることを特徴とする請求項1記載のマルチタスキング処
    理システム環境における効率的な文脈セーブ及び復旧方
    法。
  10. 【請求項10】 それぞれ散在している複数個の文脈変
    更表示を備えたプログラムを遂行するためのマルチタス
    キング環境内の第1プロセッサと、 前記第1プロセッサに接続され、プロセッサ状態情報を
    格納するように割当てられた第1メモリと、 前記第1プロセッサに接続された第2メモリと、 前記プロセッサが、実行中のプログラム内のマーク示の
    うちいずれか1つに出会ってから、プログラムの文脈変
    更要求を検出するための前記第1プロセッサ上で動作す
    る文脈変更要求検出器と、 前記第1メモリ内に位置したプロセッサ状態情報を前記
    第2メモリに格納することによって、検出された文脈変
    更要求に応答するための第1プロセッサ上で動作する文
    脈セーブモジュールと、を含むことを特徴とするコンピ
    ューティングシステム。
  11. 【請求項11】 前記文脈セーブモジュールが、文脈復
    旧モジュールの位置を格納することによって検出された
    文脈変更要求に応答することを特徴とする請求項10記
    載のコンピューティングシステム。
  12. 【請求項12】 前記第1プロセッサと相互接続された
    第1プロセッサが更に含まれるところ、前記第1及び第
    2プロセッサは非対称的な特性を有し、前記第2プロセ
    ッサは、第1プロセッサが実行中のプログラムを文脈変
    更するように要求するメカニズムを有することを特徴と
    する請求項10記載のコンピューティングシステム。
  13. 【請求項13】 前記第1プロセッサと第2プロセッサ
    との間に接続され、第1及び第2プロセッサにより相互
    にアクセス可能なレジスタを含むインタフェースユニッ
    トが更に含まれ、前記第2プロセッサは、文脈変更要求
    を示すように前記レジスタに書き込み動作を行うことが
    でき、前記第1プロセッサは、前記第2プロセッサから
    文脈変更要求を検出するように前記レジスタが読めるこ
    とを特徴とする請求項12記載のコンピューティングシ
    ステム。
  14. 【請求項14】 前記第2プロセッサは制御プロセッサ
    であり、第1プロセッサはベクトルプロセッサであるこ
    とを特徴とする請求項12記載のコンピューティングシ
    ステム。
  15. 【請求項15】 文脈変更されたプログラムと関連した
    前記第2メモリ内に位置する前記格納されたプロセッサ
    状態情報を、前記第1メモリに復帰させることによっ
    て、文脈変更されたプログラムを復旧する前記第1プロ
    セッサ上で動作する文脈復旧モジュールが更に含まれる
    ことを特徴とする請求項10記載のコンピューティング
    システム。
  16. 【請求項16】 前記マークは、前記プログラムの全般
    にかけて無事にプログラムを復旧するために最少プロセ
    ッサ状態情報を、必要とする位置に散在させることを特
    徴とする請求項10記載のコンピューティングシステ
    ム。
  17. 【請求項17】 前記マークは、条件付き文脈変更命令
    であることを特徴とする請求項10記載のコンピューテ
    ィングシステム。
  18. 【請求項18】 プログラムに条件付き文脈変更命令を
    挿入する段階と、 前記プログラムを実行する段階と、 文脈変更要求を受ける段階と、 前記条件付き文脈変更命令の中のいずれか1つを検出す
    る段階と、 前記条件付き文脈変更命令の中のいずれか1つを検出す
    る段階の後、前記文脈変更要求がプロセッサに存在する
    か否かを決定する段階と、 文脈変更要求の存在如何の決定によって、プログラムの
    復帰アドレスをセーブしたり、プログラムを実行し続け
    る段階と、前記条件付き文脈変更命令を検出する前、プ
    ログラムの状態に該当するプロセッサ状態情報をセーブ
    する段階と、文脈復旧モジュールの位置をセーブする段
    階及び、前記プロセッサを割込みする段階からなる文脈
    セーブモジュールを実行する段階とを備えたプログラム
    を変える段階と、を含むことを特徴とするマルチタスキ
    ング処理システム環境における効率的な文脈のセーブ方
    法。
  19. 【請求項19】 前記文脈セーブモジュールの実行段階
    において既にセーブされたプロセッサ状態情報をロード
    する段階と、前記プログラムを変える段階において既に
    セーブされたプログラムの復帰をロードする段階とから
    なる文脈復旧モジュールを実行する段階と、 前記プログラムを実行する段階とを更に含むことを特徴
    とする請求項18記載のマルチタスキング処理システム
    環境における効率的な文脈のセーブ方法。
  20. 【請求項20】 コプロセッサ上で前記プログラムを実
    行する段階と、 制御プロセッサからインタフェースユニットに前記文脈
    変更要求を提供する段階とが更に含まれることを特徴と
    する請求項18記載のマルチタスキング処理システム環
    境における効率的な文脈のセーブ方法。
  21. 【請求項21】 前記プログラムに条件付き文脈変更命
    令を挿入する段階が、 プログラム全般にかけて大略規則的に条件付き文脈変更
    命令を挿入することによって、この条件付き文脈変更命
    令がプログラム内の文脈変更前に最少量のプロセッサ状
    態情報のセーブを必要とするプログラム内の位置に挿入
    させる段階とを含むことを特徴とする請求項18記載の
    マルチタスキング処理システム環境における効率的な文
    脈のセーブ方法。
  22. 【請求項22】 前記挿入段階が、条件付き文脈変更命
    令は、大略に規則的な間隔で挿入することによって前記
    文脈変更要求を受け入れる段階と、条件付き文脈変更命
    令の中のいずれか1つを検出する段階との間に目立つ遅
    延が発生することを防止する段階とを更に含むことを特
    徴とする請求項21記載のマルチタスキング処理システ
    ム環境における効率的な文脈のセーブ方法。
  23. 【請求項23】 前記条件付き文脈変更命令の中のいず
    れか1つを検出することによって、前記第1プロセッサ
    を大略に規則的にインタラプトする段階が更に含まれ、 前記プログラムを実行する段階が、第1プロセッサ上で
    前記プログラムを実行する段階が含まれることを特徴と
    する請求項18記載のマルチタスキング処理システム環
    境における効率的な文脈のセーブ方法。
JP9222148A 1996-08-19 1997-08-19 マルチタスキング処理システム環境における効率的な文脈セーブ及び復旧装置及び方法 Pending JPH10143481A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/699,280 US6061711A (en) 1996-08-19 1996-08-19 Efficient context saving and restoring in a multi-tasking computing system environment
US08/699280 1996-08-19

Publications (1)

Publication Number Publication Date
JPH10143481A true JPH10143481A (ja) 1998-05-29

Family

ID=24808638

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9222148A Pending JPH10143481A (ja) 1996-08-19 1997-08-19 マルチタスキング処理システム環境における効率的な文脈セーブ及び復旧装置及び方法

Country Status (7)

Country Link
US (1) US6061711A (ja)
JP (1) JPH10143481A (ja)
KR (1) KR100241063B1 (ja)
CN (1) CN1103078C (ja)
DE (1) DE19735871A1 (ja)
FR (1) FR2752966B1 (ja)
TW (1) TW403881B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2006022202A1 (ja) * 2004-08-27 2008-05-08 松下電器産業株式会社 情報処理装置、例外制御回路
JP2008537248A (ja) * 2005-04-22 2008-09-11 エヌエックスピー ビー ヴィ デジタルシグナルプロセッサ上でのマルチタスクの実施
JP2010181989A (ja) * 2009-02-04 2010-08-19 Renesas Electronics Corp データ処理装置

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100256442B1 (ko) * 1996-08-05 2000-05-15 윤종용 아날로그버스를 갖는 멀티미디어장치
DE69822591T2 (de) * 1997-11-19 2005-03-24 Imec Vzw System und Verfahren zur Kontextumschaltung über vorbestimmte Unterbrechungspunkte
JP3027845B2 (ja) * 1997-11-21 2000-04-04 オムロン株式会社 プログラム制御装置および方法
US6243736B1 (en) * 1998-12-17 2001-06-05 Agere Systems Guardian Corp. Context controller having status-based background functional task resource allocation capability and processor employing the same
US6434689B2 (en) * 1998-11-09 2002-08-13 Infineon Technologies North America Corp. Data processing unit with interface for sharing registers by a processor and a coprocessor
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8121828B2 (en) * 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
KR100335441B1 (ko) * 1999-05-01 2002-05-04 윤종용 다중 비디오 디코딩 장치 및 그 방법
US6519265B1 (en) * 1999-05-28 2003-02-11 Sony Corporation System and method for context switching in an electronic network
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
EP1236088B9 (en) * 1999-09-01 2008-10-08 Intel Corporation Register set used in multithreaded parallel processor architecture
ATE534074T1 (de) * 1999-09-01 2011-12-15 Intel Corp Kontextwechselbefehl für multithread-prozessor
US7318090B1 (en) * 1999-10-20 2008-01-08 Sony Corporation Method for utilizing concurrent context switching to support isochronous processes
US7171547B1 (en) * 1999-12-28 2007-01-30 Intel Corporation Method and apparatus to save processor architectural state for later process resumption
US6934832B1 (en) * 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6823517B1 (en) * 2000-01-27 2004-11-23 Andrew E. Kalman Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
US20020019843A1 (en) * 2000-04-26 2002-02-14 Killian Robert T. Multiprocessor object control
US6560449B1 (en) * 2000-06-12 2003-05-06 Broadcom Corporation Image-rejection I/Q demodulators
DE60130836T2 (de) * 2000-06-12 2008-07-17 Broadcom Corp., Irvine Architektur und Verfahren zur Kontextumschaltung
US6778594B1 (en) 2000-06-12 2004-08-17 Broadcom Corporation Receiver architecture employing low intermediate frequency and complex filtering
US6993764B2 (en) * 2000-06-30 2006-01-31 The Regents Of The University Of California Buffered coscheduling for parallel programming and enhanced fault tolerance
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
JP2002297556A (ja) * 2001-03-29 2002-10-11 Fujitsu Ltd マルチプロセッサシステム,マルチプロセッサ制御方法,マルチプロセッサ制御プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体
US7512952B1 (en) * 2001-04-06 2009-03-31 Palmsource, Inc. Task switching with state preservation for programs running on an electronic device
US6832338B2 (en) * 2001-04-12 2004-12-14 International Business Machines Corporation Apparatus, method and computer program product for stopping processors without using non-maskable interrupts
CN100356349C (zh) * 2001-04-27 2007-12-19 邵通 一种实现计算设备状态转换的装置及方法
CN100356350C (zh) * 2001-04-27 2007-12-19 邵通 实现计算设备状态转换装置安全操作的装置和方法
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US6937084B2 (en) * 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US6934728B2 (en) * 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US7020788B2 (en) * 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US6975679B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US20030028696A1 (en) * 2001-06-01 2003-02-06 Michael Catherwood Low overhead interrupt
US7007172B2 (en) * 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US7003543B2 (en) * 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US20030005269A1 (en) * 2001-06-01 2003-01-02 Conner Joshua M. Multi-precision barrel shifting
US7467178B2 (en) * 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US6952711B2 (en) * 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7137121B2 (en) * 2002-04-19 2006-11-14 Equator Technologies, Inc. Data-processing circuit and method for switching between application programs without an operating system
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7107362B2 (en) * 2003-05-19 2006-09-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Integrated circuit with configuration based on parameter measurement
US20050149771A1 (en) * 2003-11-07 2005-07-07 Seiko Epson Corporation Processor control circuit, information processing apparatus, and central processing unit
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
US7493617B2 (en) * 2004-03-05 2009-02-17 International Business Machines Corporation Method of maintaining task sequence within a task domain across error recovery
US7779238B2 (en) * 2004-06-30 2010-08-17 Oracle America, Inc. Method and apparatus for precisely identifying effective addresses associated with hardware events
US8640114B2 (en) 2006-09-07 2014-01-28 Oracle America, Inc. Method and apparatus for specification and application of a user-specified filter in a data space profiler
US7424601B2 (en) * 2004-07-07 2008-09-09 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
US7664970B2 (en) 2005-12-30 2010-02-16 Intel Corporation Method and apparatus for a zero voltage processor sleep state
US20060143485A1 (en) * 2004-12-28 2006-06-29 Alon Naveh Techniques to manage power for a mobile device
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
JP4244028B2 (ja) * 2004-09-22 2009-03-25 株式会社ソニー・コンピュータエンタテインメント グラフィックプロセッサ、制御用プロセッサおよび情報処理装置
US7774784B2 (en) * 2005-03-17 2010-08-10 Microsoft Corporation Determining an actual amount of time a processor consumes in executing a portion of code
US20060256854A1 (en) * 2005-05-16 2006-11-16 Hong Jiang Parallel execution of media encoding using multi-threaded single instruction multiple data processing
CN100361106C (zh) * 2005-05-17 2008-01-09 北京中星微电子有限公司 连续访问环境下的中断恢复方法及装置
CN100361105C (zh) * 2005-05-17 2008-01-09 北京中星微电子有限公司 中断处理中恢复访问环境设置的方法及装置
US7765550B2 (en) * 2005-05-26 2010-07-27 Hewlett-Packard Development Company, L.P. System for controlling context switch of deferred requests using counter and flag setting of thread accessing shared resource or entering code region
JP4756914B2 (ja) * 2005-05-30 2011-08-24 キヤノン株式会社 遠隔協調作業支援システム及びその制御方法
US7308565B2 (en) * 2005-06-15 2007-12-11 Seiko Epson Corporation Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US7502957B2 (en) * 2005-09-09 2009-03-10 International Business Machines Corporation Method and system to execute recovery in non-homogeneous multi processor environments
US8171268B2 (en) * 2005-09-19 2012-05-01 Intel Corporation Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors
US20070101325A1 (en) * 2005-10-19 2007-05-03 Juraj Bystricky System and method for utilizing a remote memory to perform an interface save/restore procedure
US7937710B1 (en) * 2005-11-22 2011-05-03 Nvidia Corporation Context switch signaling method and system
US7590774B2 (en) * 2005-12-01 2009-09-15 Kabushiki Kaisha Toshiba Method and system for efficient context swapping
US8271994B2 (en) * 2006-02-11 2012-09-18 International Business Machines Corporation Reduced data transfer during processor context switching
US7634642B2 (en) * 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US8424013B1 (en) * 2006-09-29 2013-04-16 Emc Corporation Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt
US8813055B2 (en) * 2006-11-08 2014-08-19 Oracle America, Inc. Method and apparatus for associating user-specified data with events in a data space profiler
JP2008234074A (ja) * 2007-03-16 2008-10-02 Fujitsu Ltd キャッシュ装置
US8762951B1 (en) 2007-03-21 2014-06-24 Oracle America, Inc. Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor
US8561060B2 (en) * 2007-04-26 2013-10-15 Advanced Micro Devices, Inc. Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine
US8296768B2 (en) * 2007-06-30 2012-10-23 Intel Corporation Method and apparatus to enable runtime processor migration with operating system assistance
US8762692B2 (en) * 2007-09-27 2014-06-24 Intel Corporation Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode
US8515052B2 (en) * 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8307360B2 (en) * 2008-01-22 2012-11-06 Advanced Micro Devices, Inc. Caching binary translations for virtual machine guest
US8359602B2 (en) * 2008-02-21 2013-01-22 Ca, Inc. Method and system for task switching with inline execution
TW201009713A (en) * 2008-08-21 2010-03-01 Ind Tech Res Inst Multitasking processor and task switch method thereof
JP5433676B2 (ja) * 2009-02-24 2014-03-05 パナソニック株式会社 プロセッサ装置、マルチスレッドプロセッサ装置
US8856775B2 (en) * 2010-09-22 2014-10-07 International Business Machines Corporation Unstacking software components for migration to virtualized environments
TWI497419B (zh) * 2011-10-20 2015-08-21 Via Tech Inc 電腦裝置及其中斷任務分配方法
US20130135327A1 (en) * 2011-11-29 2013-05-30 Advanced Micro Devices, Inc. Saving and Restoring Non-Shader State Using a Command Processor
US9329834B2 (en) 2012-01-10 2016-05-03 Intel Corporation Intelligent parametric scratchap memory architecture
US8819345B2 (en) 2012-02-17 2014-08-26 Nokia Corporation Method, apparatus, and computer program product for inter-core communication in multi-core processors
US8909892B2 (en) 2012-06-15 2014-12-09 Nokia Corporation Method, apparatus, and computer program product for fast context switching of application specific processors
US10078518B2 (en) 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US10203958B2 (en) * 2013-07-15 2019-02-12 Texas Instruments Incorporated Streaming engine with stream metadata saving for context switching
US9898330B2 (en) 2013-11-11 2018-02-20 Intel Corporation Compacted context state management
US9417876B2 (en) * 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US10282227B2 (en) * 2014-11-18 2019-05-07 Intel Corporation Efficient preemption for graphics processors
US10963280B2 (en) 2016-02-03 2021-03-30 Advanced Micro Devices, Inc. Hypervisor post-write notification of control and debug register updates
US11803377B2 (en) * 2017-09-08 2023-10-31 Oracle International Corporation Efficient direct convolution using SIMD instructions
US11281495B2 (en) 2017-10-26 2022-03-22 Advanced Micro Devices, Inc. Trusted memory zone
GB2580135B (en) * 2018-12-21 2021-01-20 Graphcore Ltd Handling exceptions in a multi-tile processing arrangement
US11556374B2 (en) * 2019-02-15 2023-01-17 International Business Machines Corporation Compiler-optimized context switching with compiler-inserted data table for in-use register identification at a preferred preemption point
CN112015599B (zh) * 2019-05-31 2022-05-13 华为技术有限公司 错误恢复的方法和装置
CN112202864B (zh) * 2020-09-24 2022-12-09 建信金融科技有限责任公司 一种上下文切换系统、方法、装置、设备及介质
US11809861B2 (en) 2021-06-09 2023-11-07 Red Hat, Inc. Development environment organizer with enhanced state switching and sharing
CN113253664B (zh) * 2021-07-02 2021-10-15 峰岹科技(深圳)股份有限公司 协处理器、协处理器控制方法、终端及存储介质
US11775301B2 (en) 2021-09-24 2023-10-03 Apple Inc. Coprocessor register renaming using registers associated with an inactive context to store results from an active context

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3789365A (en) * 1971-06-03 1974-01-29 Bunker Ramo Processor interrupt system
US4954948A (en) * 1986-12-29 1990-09-04 Motorola, Inc. Microprocessor operating system for sequentially executing subtasks
US5008812A (en) * 1988-03-18 1991-04-16 Digital Equipment Corporation Context switching method and apparatus for use in a vector processing system
EP0365322A3 (en) * 1988-10-19 1991-11-27 Hewlett-Packard Company Method and apparatus for exception handling in pipeline processors having mismatched instruction pipeline depths
US5390329A (en) * 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5428779A (en) * 1992-11-09 1995-06-27 Seiko Epson Corporation System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
US5490272A (en) * 1994-01-28 1996-02-06 International Business Machines Corporation Method and apparatus for creating multithreaded time slices in a multitasking operating system
US5613114A (en) * 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US5594905A (en) * 1995-04-12 1997-01-14 Microsoft Corporation Exception handler and method for handling interrupts
US5627745A (en) * 1995-05-03 1997-05-06 Allen-Bradley Company, Inc. Parallel processing in a multitasking industrial controller
US5727211A (en) * 1995-11-09 1998-03-10 Chromatic Research, Inc. System and method for fast context switching between tasks
US5799188A (en) * 1995-12-15 1998-08-25 International Business Machines Corporation System and method for managing variable weight thread contexts in a multithreaded computer system
US5799143A (en) * 1996-08-26 1998-08-25 Motorola, Inc. Multiple context software analysis

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2006022202A1 (ja) * 2004-08-27 2008-05-08 松下電器産業株式会社 情報処理装置、例外制御回路
JP2010102732A (ja) * 2004-08-27 2010-05-06 Panasonic Corp 情報処理装置、例外制御回路及び例外制御方法
JP4564011B2 (ja) * 2004-08-27 2010-10-20 パナソニック株式会社 情報処理装置、例外制御回路
JP4569934B2 (ja) * 2004-08-27 2010-10-27 パナソニック株式会社 情報処理装置、例外制御回路及び例外制御方法
US7934082B2 (en) 2004-08-27 2011-04-26 Panasonic Corporation Information processing apparatus and exception control circuit
US8082429B2 (en) 2004-08-27 2011-12-20 Panasonic Corporation Information processing apparatus and exception control circuit
JP2008537248A (ja) * 2005-04-22 2008-09-11 エヌエックスピー ビー ヴィ デジタルシグナルプロセッサ上でのマルチタスクの実施
JP2010181989A (ja) * 2009-02-04 2010-08-19 Renesas Electronics Corp データ処理装置

Also Published As

Publication number Publication date
CN1103078C (zh) 2003-03-12
KR100241063B1 (ko) 2000-08-01
US6061711A (en) 2000-05-09
CN1175731A (zh) 1998-03-11
FR2752966B1 (fr) 2005-09-30
KR19980018064A (ko) 1998-06-05
DE19735871A1 (de) 1998-03-19
FR2752966A1 (fr) 1998-03-06
TW403881B (en) 2000-09-01

Similar Documents

Publication Publication Date Title
JPH10143481A (ja) マルチタスキング処理システム環境における効率的な文脈セーブ及び復旧装置及び方法
US6202130B1 (en) Data processing system for processing vector data and method therefor
US6073215A (en) Data processing system having a data prefetch mechanism and method therefor
US6119203A (en) Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system
US6003129A (en) System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
JP3983857B2 (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
JP4750865B2 (ja) デ―タ・プロセッサにおいて後続の命令処理に影響を及ぼす方法および装置
JP2834837B2 (ja) プログラマブルコントローラ
US5727227A (en) Interrupt coprocessor configured to process interrupts in a computer system
US5636353A (en) Superscalar processor with direct result bypass between execution units having comparators in execution units for comparing operand and result addresses and activating results bypassing
JPS63131230A (ja) 情報処理装置
JPH10149297A (ja) 通過する引き数を有するソフトウェアインタラプトをハンドリングするためのシステム及び方法
JPH11154144A (ja) プロセッサをコプロセッサにインタフェースするための方法および装置
US5860154A (en) Method and apparatus for calculating effective memory addresses
JP2507638B2 (ja) デ―タ処理装置
JP2581236B2 (ja) データ処理装置
US5687381A (en) Microprocessor including an interrupt polling unit configured to poll external devices for interrupts using interrupt acknowledge bus transactions
JPH07120284B2 (ja) データ処理装置
US5948093A (en) Microprocessor including an interrupt polling unit configured to poll external devices for interrupts when said microprocessor is in a task switch state
JP2004005603A (ja) 繰返しブロック命令を入れ子ループに沿ってゼロ・サイクル・オーバヘッドで実行する方法及び装置
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
JP2004192021A (ja) マイクロプロセッサ
JPH08255476A (ja) データ処理システムにおけるメモリ拡張スタック装置および方法
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040615

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040924

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040930

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050301