JPH04184630A - ループ制御のネスティング管理機構 - Google Patents

ループ制御のネスティング管理機構

Info

Publication number
JPH04184630A
JPH04184630A JP2315344A JP31534490A JPH04184630A JP H04184630 A JPH04184630 A JP H04184630A JP 2315344 A JP2315344 A JP 2315344A JP 31534490 A JP31534490 A JP 31534490A JP H04184630 A JPH04184630 A JP H04184630A
Authority
JP
Japan
Prior art keywords
loop
register
stack
hardware stack
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.)
Granted
Application number
JP2315344A
Other languages
English (en)
Other versions
JP3102027B2 (ja
Inventor
Yasushi Oi
康 大井
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP02315344A priority Critical patent/JP3102027B2/ja
Priority to US07/796,261 priority patent/US5375238A/en
Priority to DE69130852T priority patent/DE69130852T2/de
Priority to EP91119872A priority patent/EP0487082B1/en
Publication of JPH04184630A publication Critical patent/JPH04184630A/ja
Application granted granted Critical
Publication of JP3102027B2 publication Critical patent/JP3102027B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、情報処理装置における1つ以上の命令の繰り
返し処理(ループ処理)を制御する方式に関し、特に、
ループ処理における情報のセーブリストアといったスタ
ック管理方法に関する。
〔従来の技術〕
従来、分岐オーバーヘッドをもたないループ命令は、デ
ィジタル信号処理プロセッサ(DSP)の分野に多く用
いられてきた。
例えば、従来例1として、TI(テキサス・インストゥ
ルメント)社のDSP、320C30はループ命令をも
つ。ただ、320C30のループ命令はネスティングに
ついては考慮されていない。
第1のループ実行中に第2のループ命令を実行すると、
第1のループ制御に用いられている変数情報(ループ回
数、ループ先頭アドレスなど)は破壊されてしまう。
また、従来例2として、Motorola社のDSPシ
リーズである、DSP56001やDSP 96002
には、ネスティング可能な仕様のループ命令が備えられ
ている。この命令では、上述のループ回数や、ループ先
頭アドレスなどの情報は、ループ命令の実行に伴い、当
該レジスタに設定されるとともに、それ以前に設定され
ていたレジスタ値を、別途準備されているハードウェア
スタックにセーブすることになる。
特に、画像信号処理における矩形領域処理をアクセスす
る場合など、2次元にわたる処理をループ命令で記述す
る場合、ループ命令のネスティングができることが望ま
しい。
ここで、上述の従来例に基づいた一般的なループ命令の
動作を、図面を用いて詳細に説明する。
第4図は、ループ命令を用いたプログラム例である。ル
ープ命令では、そのオペランドとして、ループ回数およ
びループ終了アドレスが指定されている。ループ開始ア
ドレスについては、ループ命令のすぐ次の命令アドレス
であるため、命令に明示的に記述される必要はない。
第3図は、従来のループ制御のネスティング管理機構を
示すブロック図である。第3図において、101ニブロ
グラムカウンタ、102:ルーブ力ウンタレジスタ、1
03:ループ終了アドレスレジスタ、104:ループ開
始アドレスレジスタ、105:デクリメンタ、106:
ゼロ検出器、107:一致検出器、108ニハードウエ
ア・スタック、109ニハードウエア・スタック・ポイ
ンタ、110:インクリメンタ/デクリメンタ、120
:プログラムカウンタバス、 を、各々表わす。
ループ命令が実行されると、第4図に基づいて説明した
ように、ループカウンタレジスタ102゜ループ終了ア
ドレスレジスタ103、およびループ開始アドレスレジ
スタ104が設定される。
ループ内部の命令群を逐次実行し、プログラムカウンタ
101がループ終了アドレスの直前に至ると、−数比較
器107によって、ループ先頭分岐フラグが設定され、
次の命令を実行せず、ループの先頭にジャンプする。
ループの先頭へのジャンプは、ループ開始アドレス10
4の値をプログラムカウンタ101に転送することで行
なわれる。
このようなジャンプは、ループ回数だけ繰り返される。
ループカウンタレジスタ102に設定された値は、ジャ
ンプが発生する度に、デクリメンタ105によって1ず
つ減じられていく。最終的にループカウンタレジスタ1
02の値がOになったことがゼロ検出器106によって
検出される(これはループ終了フラグによる)と、ジャ
ンプは発生せず、ループを抜けることになる。
このように、3つのレジスタ102,103゜104の
内容は、ループ実行時の基本的な状態を保持するもので
ある。もし、ループがネスティングする場合には、これ
らの情報をセーブ・リストアすることになる。
従来のDSPにおいては、このセーブ・リストアを、ハ
ードウェアスタック108を別途膜はレジスタ102,
103,104と、ハードウェアスタック108との間
でのデータ転送を行なうことで行なってきた。つまり、
ループ命令が実行されると、それ以前のレジスタ102
,103゜104の内容がハードウェアスタック108
にブツシュされ、ループ終了条件が確定し、ループから
抜けると、ハードウェアスタック108の内容がレジス
タ102,103,104にポツプされるのである。
〔発明が解決しようとする課題〕
通常、DSPの命令実行のスループットは1クロツク1
命令が原則である。
ループ開始時点では、ループ命令自体を複数クロックで
実行させる制御が可能であり、問題はおこらない。しか
し、ループの終了条件が成立するときはループ終了命令
が存在しないわけであり、しかも、ハードウェアスタッ
ク108の内容がレジスタ102,103,104にポ
ツプされるが、これは1クロツクでは実行できない。よ
って、その転送サイクル期間中には、複数の命令が実行
されることになる。
一般に、ハードウェアスタック108は、ループ処理以
外、例えばサブルーチン呼出しや、割込み・例外処理に
おける状態保存・復帰にも用いられる。よって、この期
間中には、ハードウェアスタックを使用する命令(つま
り、サブルーチン呼出し命令、復帰命令、ループ命令)
は書けないし、続けてループの終了が発生することも許
されない。
これは、プログラムを記述するうえで大きな制約になる
。さらに、この期間中にハードウェア・スタックのアン
ダーフロラが発生する可能性もあり、この例外制御を行
なうハードウェア論理を余分に必要とする。
このように、ループ命令で1つのハードウェアスタック
を使用して状態保存することは、状態復帰時に、余計な
タイミングを生じ、プログラミング上の制約や、例外処
理用制御論理の追加を余儀なくされるという欠点を有し
ている。
〔課題を解決するための手段〕
本発明のループ制御のネスティング管理機構は、条件分
岐命令を介在することなく、命令を繰り返し実行させる
ことのできる情報処理装置のループ制御のネスティング
管理機構であって、前記ループ制御のため、少なくとも
ループ回数レジスタとループ開始アドレスレジスタとを
有し、ループネスティングの際に前記各レジスタの内容
を先入れ後出し方式(F I LO方式)で管理するた
めのハードウェアスタックを、前記各レジスタ毎に独立
して有することを特徴とする。
さらに、本発明のループ制御のネスティング管理機構は
、ループ終了アドレスレジスタを有し、H記ハードウェ
アスタックが前記ループ終了アドレスレジスタに付加さ
れているように構成することができる。
また、本発明のループ制御のネスティング管理機構は、
ループ終了オフセットレジスタを有し、1m記ハードウ
ェアスタックが前記ループ終了オフセットレジスタに付
加されているように構成することができる。
〔実施例〕
次に、本発明の実施例を図面を参照して説明する。
第1図は、本発明の一実施例のブロック図である。第1
図において、101はプログラムカウンタ、102はル
ープカウンタレジスタ、103はループ終了アドレスレ
ジスタ、104はループ開始アドレスレジスタ、105
はデクリメンタ、106はゼロ検出器、107は一致検
出器、108はハードウェア・スタック、109はハー
ドウェア・スタック・ポインタ、110はインクリメン
タ/デクリメンタ、120はプログラムカウンタバス、
130はハードウェア・スタックを、各々表わす。従来
例である第3図と第1図との相違点は、ハードウェアス
タック130が追加されている点である。
ループ命令が実行されると、ループカウンタレジスタ1
02.ループ終了アドレスレジスタ103、およびルー
プ開始アドレスレジスタ104が設定される。ループ内
部の命令群を逐次実行し、プログラムカウンタ101が
ループ終了アドレスの直前に至ると、−数比較器107
によって、ループ先頭分岐フラグが設定され、次の命令
を実行せず、ループの先頭にジャンプする。ループの先
頭へのジャンプは、ループ開始アドレス104の値をプ
ログラムカウンタ101に転送することで行なわれる。
このようなジャンプは、ループ回数だけ繰り返される。
ループカウンタレジスタ102に設定された値は、ジャ
ンプが発生する度に、デクリメンタ105によって1ず
つ減じられていく。最終的にループカウンタレジスタ1
02の値が0になったことがゼロ検出器106によって
検圧される(これはループ終了フラグによる)と、ジャ
ンプは発生せず、ループを抜けることになる。
このように、3つのレジスタ102,103゜104の
内容は、ループ実行時の基本的な状態を保持するもので
ある。もし、ループがネスティングする場合には、これ
らの情報をセーブ・リストアすることになる。
このセーブ・リストアは、レジスタ102゜103.1
04に対して1つずつ設けられたハードウェアスタック
130との間でのデータ転送で行なわれる。つまり、ル
ープ命令が実行されると、それ以前のレジスタ102,
103,104の内容が対応するハードウェアスタック
130にプッシュされ、ループ終了条件が確定し、ルー
プから抜けると、各ハードウェアスタック130の内容
がレジスタ102,103,104にポツプされるので
ある。
これらの転送は、第3図に示された従来例と異なり、プ
ログラムバス120を経由しないため、同時に実行する
ことが可能である。特に、ループの終了条件が成立する
ときのハードウェアスタック130のポツプは1クロツ
クで実行できる。
一般に、ハードウェアスタック108は、ループ処理以
外、例えばサブルーチン呼出しや、割込み・例外処理に
おける状態保存・復帰にも用いられる。しかし、ループ
処理用のハードウェアスタック130はそれとは分離さ
れているために、この期間中に、ハードウェアスタック
108を使用する命令(つまり、サブルーチン呼圧し命
令。
復帰命令、ループ命令)がオーバラップしても不都合は
生じない。また、ループの終了は1クロツクで実行でき
るため、連続したループの終了が発生することも許され
る。つまり、プログラムを記述するうえでの制約は、ル
ープの終了に関する限り存在しない。
ループ命令のハードウェア・スタック130のオーパフ
ロウが発生する可能性があるため、ループネスティング
の上限を設定する必要があるが、これは、上述のプログ
ラミングの制約に比べてはるかに小さなものである。
次に、本発明の第2実施例を図面を参照して説明する。
第2図は、本発明の実施例2のブロック図である。
第1図と第2図との相違点は、ループ終了アドレスレジ
スタ1030代りに、ループ終了オフセットレジスタ1
11が置かれている点、および、それを受けて、レジス
タ104の内容であるループ開始アドレスと、レジスタ
111の内容とを加算してループ終了アドレスを計算す
るための加算器112が追加されている点である。
命令によるループ終了アドレス指定は、絶対番地である
より、プログラムカウンタ相対番地であるほうが、リロ
ケータブルな命令コードを生成できる点で都合がよい。
この実施例2は、そのような場合であっても、本発明が
適用できることを示している。
〔発明の効果〕
このように、本発明を用いれば、ループ命令で1つのハ
ードウェアスタックを使用して状態保存する場合に比べ
て、状態復帰時に、余計なノ・−ドウエアスタックアク
セスのタイミングを生じないこと、およびハードウェア
スタックの競合を生じないことにより、プログラミング
上の制約や、ハードウェア設計時の余分な例外処理制御
を省くことが可能になりその効果は大きい。
【図面の簡単な説明】
第1図は、本発明の実施例のブ四ツク図である。 第1図において、 101・・・・・・プログラムカウンタ、102・・・
・・・ループカウンタレジスタ、103・・・・・・ル
ープ終了アドレスレジスタ、104・・・・・・ループ
開始アドレスレジスタ、105・・・・・・デクリメン
タ、106・・・・・・ゼロ検出器、107・・・・・
・一致検出器、108・・・・・・ハードウェア・スタ
ック、109・・・・・・ハードウェア・スタック・ポ
インタ、110・・・・・・インクリメンタ/デクリメ
ンタ、120・・・・・・プログラムカウンタバフ、1
30・・・・・・ハードウェア・スタックを、各々表わ
す。 第2図は、本発明の実施例2のブロック図である。 第2図において、 111・・・・・・ループ終了オフセットレジスタ、1
12・・・・・・加算器 を、各々表わす。 第3図は、従来のループ制御のネスティング管理機構を
示すブロック図である。 第3図において、 101・・・・・・プログラムカウンタ、102・・・
・・・ループカウンタレジスタ、103・・・・・・ル
ープ終了アドレスレジスタ、104・・・・・・ループ
關始アドレスレジスタ、105・・・・・・デクリメン
タ、106・・・・・・ゼロ検出器、107・・・・・
・一致検出器、108・・・・・・ハードウェア・スタ
ック、109・・・・・・ハードウェア・スタック・ポ
インタ、110・・・・・・インクリメンタ/デクリメ
ンタ、120・・・・・・プログラムカウンタバス を、各々表わす。 第4図は、ループ命令を用いたプルグラム例である。 代理人 弁理士  内 原   音

Claims (1)

  1. 【特許請求の範囲】 1、条件分岐命令を介在することなく命令群を繰り返し
    実行させることのできる情報処理装置のループ制御のネ
    スティング管理機構であって、前記ループ制御のため、
    少なくともループカウンタレジスタとループ開始アドレ
    スレジスタとを有し、ループネスティングの際に前記各
    レジスタの内容を先入れ後出し方式(FILO方式)で
    管理するためのハードウェアスタックを、前記各レジス
    タ毎に独立して有することを特徴とするループ制御のネ
    スティング管理機構。 2、特許請求の範囲第1項記載のループ制御のネスティ
    ング管理機構であって、ループ終了アドレスレジスタを
    有し、前記ハードウェアスタックが前記ループ終了アド
    レスレジスタに付加されていることを特徴とするループ
    制御のネスティング管理機構。 3、特許請求の範囲第1項記載のループ制御のネスティ
    ング管理機構であって、ループ終了オフセットレジスタ
    を有し、前記ハードウェアスタックが前記ループ終了オ
    フセットレジスタに付加されていることを特徴とするル
    ープ制御のネスティング管理機構。
JP02315344A 1990-11-20 1990-11-20 ループ制御のネスティング管理機構 Expired - Fee Related JP3102027B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP02315344A JP3102027B2 (ja) 1990-11-20 1990-11-20 ループ制御のネスティング管理機構
US07/796,261 US5375238A (en) 1990-11-20 1991-11-20 Nesting management mechanism for use in loop control system
DE69130852T DE69130852T2 (de) 1990-11-20 1991-11-21 Verarbeitungsmechanismus zur Verschachtelung in einem Schleifensteuersystem
EP91119872A EP0487082B1 (en) 1990-11-20 1991-11-21 Nesting management mechanism for use in loop control system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP02315344A JP3102027B2 (ja) 1990-11-20 1990-11-20 ループ制御のネスティング管理機構

Publications (2)

Publication Number Publication Date
JPH04184630A true JPH04184630A (ja) 1992-07-01
JP3102027B2 JP3102027B2 (ja) 2000-10-23

Family

ID=18064283

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02315344A Expired - Fee Related JP3102027B2 (ja) 1990-11-20 1990-11-20 ループ制御のネスティング管理機構

Country Status (4)

Country Link
US (1) US5375238A (ja)
EP (1) EP0487082B1 (ja)
JP (1) JP3102027B2 (ja)
DE (1) DE69130852T2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0863355A (ja) * 1994-08-18 1996-03-08 Mitsubishi Electric Corp プログラム制御装置及びプログラム制御方法
JP2987311B2 (ja) * 1995-05-12 1999-12-06 松下電器産業株式会社 プロセッサ及び翻訳装置
US5727194A (en) * 1995-06-07 1998-03-10 Hitachi America, Ltd. Repeat-bit based, compact system and method for implementing zero-overhead loops
US5710913A (en) * 1995-12-29 1998-01-20 Atmel Corporation Method and apparatus for executing nested loops in a digital signal processor
US5920724A (en) * 1996-03-28 1999-07-06 Intel Corporation Software pipelining a hyperblock loop
GB2323190B (en) * 1997-03-14 2001-09-19 Nokia Mobile Phones Ltd Executing nested loops
US5828875A (en) * 1997-05-29 1998-10-27 Telefonaktiebolaget Lm Ericsson Unroll of instructions in a micro-controller
US6189092B1 (en) 1997-06-30 2001-02-13 Matsushita Electric Industrial Co., Ltd. Pipeline processor capable of reducing branch hazards with small-scale circuit
JP4115576B2 (ja) * 1998-03-04 2008-07-09 富士通株式会社 マルチプロセッサシステム
EP1050804A1 (en) 1999-05-03 2000-11-08 STMicroelectronics SA Execution of instruction loops
US6748523B1 (en) * 2000-11-02 2004-06-08 Intel Corporation Hardware loops
US6763453B2 (en) 2000-12-28 2004-07-13 Intel Corporation Security on hardware loops
JP3509023B2 (ja) * 2002-06-26 2004-03-22 沖電気工業株式会社 ループ制御回路及びループ制御方法
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US20060107028A1 (en) * 2002-11-28 2006-05-18 Koninklijke Philips Electronics N.V. Loop control circuit for a data processor
US8019981B1 (en) * 2004-01-06 2011-09-13 Altera Corporation Loop instruction execution using a register identifier
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US7991984B2 (en) * 2005-02-17 2011-08-02 Samsung Electronics Co., Ltd. System and method for executing loops in a processor
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7913069B2 (en) * 2006-02-16 2011-03-22 Vns Portfolio Llc Processor and method for executing a program loop within an instruction word
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US20070266229A1 (en) * 2006-05-10 2007-11-15 Erich Plondke Encoding hardware end loop information onto an instruction
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
US20100122066A1 (en) * 2008-11-12 2010-05-13 Freescale Semiconductor, Inc. Instruction method for facilitating efficient coding and instruction fetch of loop construct
US8447961B2 (en) * 2009-02-18 2013-05-21 Saankhya Labs Pvt Ltd Mechanism for efficient implementation of software pipelined loops in VLIW processors
US9875104B2 (en) 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10248908B2 (en) 2017-06-19 2019-04-02 Google Llc Alternative loop limits for accessing data in multi-dimensional tensors
GB2568776B (en) 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
CN114822624B (zh) * 2022-05-23 2024-05-03 长鑫存储技术有限公司 计数器电路

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4097920A (en) * 1976-12-13 1978-06-27 Rca Corporation Hardware control for repeating program loops in electronic computers
EP0221741A3 (en) * 1985-11-01 1991-01-16 Advanced Micro Devices, Inc. Computer microsequencers
US4652997A (en) * 1985-11-27 1987-03-24 Motorola, Inc. Method and apparatus for minimizing overhead when executing nested do loops
JPS6353644A (ja) * 1986-08-23 1988-03-07 Nec Corp 命令制御装置
US4876642A (en) * 1988-01-19 1989-10-24 Gibson Glenn A Rules and apparatus for a loop capturing code buffer that prefetches instructions
EP0454606A3 (en) * 1990-04-23 1993-08-11 International Business Machines Corporation Digital processor with a pipelined architecture permitting an improved concurrent processing of multiple applications

Also Published As

Publication number Publication date
DE69130852D1 (de) 1999-03-18
DE69130852T2 (de) 1999-08-12
EP0487082B1 (en) 1999-02-03
EP0487082A3 (en) 1993-08-18
US5375238A (en) 1994-12-20
EP0487082A2 (en) 1992-05-27
JP3102027B2 (ja) 2000-10-23

Similar Documents

Publication Publication Date Title
JPH04184630A (ja) ループ制御のネスティング管理機構
US5515538A (en) Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US6513057B1 (en) Heterogeneous symmetric multi-processing system
US5701493A (en) Exception handling method and apparatus in data processing systems
KR970008523B1 (ko) 프로세서
JPS59133650A (ja) マイクロコンピユ−タおよびマイクロコンピユ−タのネツトワ−クならびにこれらを動作させる方法
US6738846B1 (en) Cooperative processing of tasks in a multi-threaded computing system
US4833640A (en) Register bank change including register to register transfer in a data processing system
US4257096A (en) Synchronous and conditional inter-program control apparatus for a computer system
US9841994B2 (en) Implementation of multi-tasking on a digital signal processor with a hardware stack
JPH01161442A (ja) レジスタ退避・回復方式
EP0240108A2 (en) A data processing system
JPS6362039A (ja) 計算機
JP2514963B2 (ja) デ―タ処理装置
US7203822B2 (en) Unprivileged context management
JPH0895798A (ja) データ処理装置
JP3539984B2 (ja) プロセッサ
US20230315456A1 (en) Processing apparatus
JPH0527975A (ja) マイクロコンピユータ
TW480445B (en) Method for downloading application programs on the compiler system platform of an electronic communication device
Hunt Interrupts
JPH0363866A (ja) マスタースレーブプロセッサ
JPH04227541A (ja) プロセッサ及びループ制御機能処理方法
JPS6330938A (ja) マイクロプログラム制御装置
JPS60105046A (ja) アドレススタツク制御方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees