JP2004038959A - 共用プログラムメモリを有するマルチプロセッサ計算装置 - Google Patents

共用プログラムメモリを有するマルチプロセッサ計算装置 Download PDF

Info

Publication number
JP2004038959A
JP2004038959A JP2003171623A JP2003171623A JP2004038959A JP 2004038959 A JP2004038959 A JP 2004038959A JP 2003171623 A JP2003171623 A JP 2003171623A JP 2003171623 A JP2003171623 A JP 2003171623A JP 2004038959 A JP2004038959 A JP 2004038959A
Authority
JP
Japan
Prior art keywords
memory
software
processing units
sections
successive
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
JP2003171623A
Other languages
English (en)
Inventor
Chad Kendall
チヤド・ケンダール
Predrag Kostic
プレドラーグ・コステイツク
Robert Elliott Robotham
ロバート・エリオツト・ロボサム
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.)
Nokia Canada Inc
Original Assignee
Alcatel Canada Inc
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 Alcatel Canada Inc filed Critical Alcatel Canada Inc
Publication of JP2004038959A publication Critical patent/JP2004038959A/ja
Pending 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7864Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
    • 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/3802Instruction prefetching
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Abstract

【課題】複数の処理装置によって実行するための命令に対するアクセスを備えた複数の処理装置を提供すること。
【解決手段】いくつかの処理装置によって共用される命令メモリは、個々にアクセス可能な複数のセクションを有する。命令メモリ内のソフトウエアプログラムはメモリセクションに割当てられる。ソフトウエアプログラムの連続する部分は連続するセクション内にある。ソフトウエアプログラムは、メモリセクションの各々内で繰り返される共用の区画を有することができる。アービタ論理は、各メモリアクセスサイクルにおいて、どの処理装置がどのメモリセクションにアクセスするかを制御することができる。
【選択図】   図1

Description

【技術分野】
【0001】
本発明はデータ処理の分野に関する。詳細には、本発明は、共用プログラムメモリからの命令を実行する複数のプロセッサを有するデータ処理デバイスに関する。本発明は、例えば、ネットワークプロセッサおよび画像プロセッサにおける応用例を有する。
【背景技術】
【0002】
類似のタスクを行うために、複数のデータプロセッサが同時に動作して、同じコンピュータソフトウエアを実行する様々な状況がある。例えば、ネットワークプロセッサは、電気通信ネットワークにおいてデータパケットを受信し、パケット内の情報に基づいて処理を行う装置である。ネットワークプロセッサによって行われる処理の例には、特定の出力ポートにパケットを転送すること、パケットを優先キューに割り当てること、パケットをドロップすることなどが含まれる。ほとんどのネットワーク処理タスクは各パケットについて個別に行われなければならないため、着信パケットを処理するタスクを複数の処理装置の間で共用するアーキテクチャをネットワークプロセッサが有することは珍しくない。処理装置の各々は、着信パケットがどのように処理されるかを制御する同じコンピュータソフトウエアを実行する。
【0003】
単一の特定用途向け集積回路(ASIC)上に、多数のネットワークプロセッサを作製することができる。各プロセッサは命令メモリからの命令を実行する。いくつかのネットワークプロセッサは、いくつかの処理装置によって共用される共用命令メモリを有する。例えば、国際公開第01/17179号パンフレットは、共用命令メモリからのピココードを同時に実行できるN個の処理装置を有するネットワークプロセッサを開示する。
【0004】
画像処理デバイスも、共用命令メモリからの命令を実行する複数の処理装置を含むことができる。
【0005】
このような共用メモリアーキテクチャの問題は、共用命令メモリ内の各位置が、典型的には一度に1つのプロセッサのみによってしかアクセスできないことである。この場合、いくつかの処理装置は、それらが命令を必要とする時でも、共用命令メモリから命令を得ることが可能でないことがある。そのようなプロセッサは、それらが必要としている命令を共用命令メモリから読み出すことができるタイムスライスまで機能を停止することがある。これは非効率的であり、処理の全体的なスループットを低下させる。
【0006】
【文献1】
国際公開第01/17179号パンフレット
【考案の開示】
【発明が解決しようとする課題】
【0007】
本発明は、複数の処理装置によって実行されるべき命令に対するアクセスを複数の処理装置に提供するための方法および装置に関する。この命令は、処理装置間で共用されるメモリ構造に保持される。
【課題を解決するための手段】
【0008】
本発明の1つの態様は、複数の処理装置、いくつかの同時アクセス可能メモリセクションを含むメモリ構造、および、メモリセクションアクセスコントロールを含む装置を提供する。メモリセクションの数は、処理装置の数に少なくとも等しい。メモリ構造は、連続する部分が連続するメモリセクション内に存するように、メモリセクション間に分布される部分を備える複数の連続する部分を含むソフトウエアを保持することができる。メモリセクションアクセスコントロールは、処理装置とメモリ構造の間に接続され、複数の連続するメモリアクセスサイクルの各々で、処理装置の各々が、メモリセクションの異なる1つからソフトウエアの部分の1つを読み出すことを可能にするように構成される。メモリセクションアクセスコントロールは、処理装置の少なくとも1つが、連続するメモリアクセスサイクルで、連続する複数のメモリセクションからソフトウエアの連続する複数の部分を読み出すことを可能にする。
【0009】
本発明の他の態様は、複数の処理装置によって実行されるべきソフトウエアを含む共用命令メモリに対するアクセスを複数の処理装置に提供するための方法を提供する。この方法は、連続する部分が連続するメモリセクションに存するように、複数の同時アクセス可能メモリセクションの間にソフトウエアを分布させるステップ、複数のメモリアクセスサイクルの各々において、処理装置の各々のために、メモリセクションの異なる1つからソフトウエアの部分を読み出すステップ、および、連続する複数のメモリアクセスサイクルにおいて、処理装置の少なくとも1つのために、連続する複数のメモリセクションからソフトウエアの連続する複数の部分を読み出すステップを含む。
【0010】
本発明の更なる態様および本発明の特定の実施形態の特徴を以下に説明する。
【0011】
図面では本発明の非限定的実施形態を示す。
【0012】
以下の説明全体を通して、本発明の更に徹底的な理解を提供するために、特定の詳細を述べる。しかし、本発明はこれらの具体点がなくとも実現することができる。他の例において、本発明を不必要に不明瞭にすることを回避するために、よく知られている要素は詳細には示さず、また、説明しない。したがって、本明細書および図面は限定的ではなく例示的な意味で考えるべきである。
【発明を実施するための最良の形態】
【0013】
図1は本発明の1つの実施形態によるマルチプロセッサデータ処理装置10を示す。装置10はいくつかの処理装置12を含む。装置10は、整数mに対し2個の処理装置12を含むことが便利である。各処理装置12は、ASIC上にプロセッサコアを含むことができる。処理装置12はメモリ構造13に保存される命令にアクセスし、実行する。メモリ構造13は複数の独立にアクセス可能なセクション14を含む。示す実施形態において、メモリ構造13は、4つの処理装置12による実行のための命令を含む4つのセクション14−0から14−3までを含む。
【0014】
メモリ構造13は、処理装置12によって実行されるべきソフトウエアプログラム15を含む。図2に示すように、ソフトウエアプログラム15は、(各々が1つの命令、または、任意にマルチ命令を含む)いくつかの部分(PART)を含む。各PARTは、好ましくは、処理装置12の命令バス17の幅に等しい幅を有する。各PARTは例えば1つのワードを含み、命令バス17は各々1つのワードの幅を有することができる。ワードは、例えば、8、16、32、または、64ビットのワードとすることができる。
【0015】
PARTはセクション14−0から14−3までの間でインターリーブされる。セクション14−0はPART0、4、8、12などを含む。セクション14−1はPART1、5、8、13などを含む。セクション14−2はPART2、6、9、14などを含む。セクション14−3はPART3、7、10、15などを含む。
【0016】
メモリセクションアクセスコントロールは処理装置12とメモリ構造13との間に接続される。メモリセクションアクセスコントロールは、各メモリアクセスサイクルにおいてどの処理装置12がどのメモリセクション14にアクセスできるかを決定する。図1の実施形態において、メモリセクションアクセスコントロールは、各セクション14について、入力マルチプレクサ20、出力マルチプレクサ24、および、カウンタ25を含む。各カウンタ25は入力マルチプレクサ20および出力マルチプレクサ24の入力を制御するために提供される数値を含む。この数値は、メモリセクション選択数値と呼ぶことができる。2個のプロセッサがある場合、カウンタ25はmビットのカウンタであると好都合である。
【0017】
各処理装置12はプログラムカウンタ22を有する。プログラムカウンタ22は、典型的には、図1の点線12’によって示す処理装置12の一部である。プログラムカウンタ22は、連動する処理装置12による実行のためにメモリ構造13からフェッチされるソフトウエア15の次の部分(PART)を直接または間接に示す数値を含む。各処理装置12と連動するプログラムカウンタ22は各入力マルチプレクサ20の入力に提供される。
【0018】
各メモリセクション14の入力において、入力マルチプレクサ20は処理装置12の1つのためにプログラムカウンタ数値を提供する。どのプログラムカウンタ数値がメモリセクション14の入力に供給されるかは、カウンタ25内の数値によって決定される。各サイクルにおいて、ソフトウエア15のPARTは、セクション14の入力における数値によって指定される各メモリセクション14から検索される。
【0019】
各メモリセクション14は出力にソフトウエア15の検索されたPARTを提供する。メモリセクション14の各出力は各出力マルチプレクサ24の入力に接続される。各出力マルチプレクサ24からの出力は、処理装置12の1つと連動する命令バス17に接続する。これによって、処理装置12の各々は、出力マルチプレクサ24によってメモリセクション14の1つから命令を受け取る。特定のメモリアクセスサイクルにおいて、特定の処理装置12に送られる命令を発する特定のメモリセクション14は、その処理装置12に連動するカウンタ25の数値によって決定される。
【0020】
カウンタ25内の数値は、各メモリアクセスサイクルの間に、各処理装置12がメモリセクション14の異なる1つに対してアクセスするように設定される。後続の各メモリアクセスサイクルにおいて、いくつかのメモリアクセスサイクルにわたって各処理装置12が各メモリセクション14およびソフトウエア15の全てのPARTに対してアクセスするように、カウンタ25内の数値が変更される。例えば、カウンタ25内の数値は、図3に示すように順次交代させることができる。4つのメモリセクション14および25−0から25−3までとして識別される4つのカウンタ25がある場合、カウンタ25内の数値は表Iに示すように順次交代させることができる。
【表1】
Figure 2004038959
【0021】
例えば、図1のシステムがリセットされるとき、各プロセッサユニット12はソフトウエア15の実行を始めるように設定される。各プロセッサユニット12のプログラムカウンタ22は、ソフトウエア15のPART0を識別する数値を含む。PART0はメモリセクション14−0内にあるため、(第1のメモリアクセスサイクルにメモリセクション14−0に対してアクセスする)処理装置12−0のみが、それが必要とする命令を得る。処理装置12−0は、第1のメモリアクセスサイクルのメモリセクション14−0に対するアクセスを備える唯一の処理装置である。なぜなら、それのカウンタ25−0における数値がメモリセクション14−0に対応するからである。他の処理装置12は機能を停止する。
【0022】
第2のメモリアクセスサイクルでは、処理装置12−0はメモリセクション14−1に対してアクセスし、ソフトウエア15のPART1を読み出すことができる(第2のメモリアクセスサイクルで、カウンタ25−0内の数値はメモリセクション14−1に対応する)。第2のメモリアクセスサイクルで、処理装置12−1はソフトウエア15のPART0を検索できる。ソフトウエア15のPART0に対するアクセスを未だに待っている他の2つ処理装置12は機能停止する。
【0023】
第4のメモリアクセスサイクル以降で、処理装置12のいずれもがソフトウエア15においてジャンプまたは枝分かれを実行しない限り、各処理装置12はラウンドロビン方式でソフトウエア15の次のPARTを受け取る。1つの処理装置12がジャンプまたは枝分かれを確かに実行すれば、そのプロセッサ12が枝分かれした先の命令を含むメモリセクション14に対してアクセスする次のメモリアクセスサイクルまで、そのプロセッサは機能を停止する。上述の実施形態において、ジャンプまたは枝分かれする処理装置12は、もしそのプログラムカウンタ22内のアドレスの最も低い2つのビットがその対応するカウンタ25内の数値に一致しなければ、与えられたメモリアクセスサイクルにおいて機能を停止する。
【0024】
多くの応用例において、ソフトウエア15は、共通に実行されるコードの比較的小さなセクション、および、扱わなければならないが比較的稀にしか発生しない状況を扱うための比較的大きな量のコードを含む。例えば、処理装置12がパケット処理に適用された場合、処理装置12のほとんどは、ソフトウエア15の共通に実行される部分を実行するのに時間のほとんどを費やす。時々、処理装置12は、例えば、誤ったパケット、または、セルの伝送、または、選択肢を備えたパケットなどの例外に遭遇する。これが発生した場合、処理装置12は、例外を扱うためのコードを含むソフトウエア15のあまり共通に使用されない部分に枝分かれする。
【0025】
このような状況において、上述したように、メモリセクション14の各々にソフトウエア15の完全に共通に使用される区画を提供すること、および、メモリセクション14間にソフトウエア15の残りのあまり共通に使用されない区画を分布させることは有利となることがある。図4はメモリセクション14におけるソフトウエア15の1つの可能な配列を示す。メモリセクション14は、各々2つの領域14Aおよび14Bに分割される。ソフトウエア15の第1の区画15Aはメモリセクション14の各々において繰り返される。第1の区画15Aは領域14Aに位置する。区画15Aは0からM−1までの範囲にあるプログラムカウンタ数値によって検索される部分を含む。
【0026】
ソフトウエア15の第2の区画15Bは、上述のようにメモリセクション14の領域14B間に分割される。第2の区画15Bは、MからNまでの範囲にあるプログラムカウンタ数値によって検索される部分を含む。図4に示すように、PARTM、M+4、M+8などはメモリセクション14−0の領域14Bに位置し、PARTM+1、M+5、M+9などはメモリセクション14−1の領域14Bに位置する。第2の区画15Bの他のPARTは、メモリセクション14−2および14−3の領域14Bに位置する。
【0027】
図4に示すメモリの配置の場合、処理装置12がソフトウエア15の区画15Aに見出される命令を実行している限り、区画15Aの全ての部分(PART)がメモリセクション14の各1つにおいて繰り返されるため、機能停止はない。もし処理装置12が区画15Bにあるソフトウエア15の部分(PART)に枝分かれすれば、処理装置12は、それが枝分かれするソフトウエア15の部分(PART)を含むメモリセクション14へのアクセスを有するまで、最大3つのメモリアクセスサイクルにわたって機能を停止することができる。
【0028】
メモリ領域14Aおよび14Bの相対サイズは設定可能とすることができる。装置10は、メモリ領域14Aとメモリ領域14Bとの間の境界を決定するアドレスを表す数値を含むレジスタを含むことができる。レジスタ内の数値を変更することによって、性能とソフトウエア15のサイズとのいずれかを取ることができる。セクション14の全てがメモリ領域14Aとして処理されるように数値を設定することによって、より少ない量のソフトウエア15しか収容できないという犠牲を払って、性能を高め、機能停止を回避することができる。セクション14の全てがメモリ領域14Bとして処理されるように数値を設定することによって、性能を犠牲にしてソフトウエア15のための容量を増加させることができる。
【0029】
図5は本発明の他の実施形態による装置10’を示す。装置10’はカウンタ25の代わりにアービタ30を含む。アービタ30は処理装置12の各々からプログラムカウンタ数値を受け取る入力、および、マルチプレクサ20および24を制御する出力を有する。アービタ30は、処理装置12が必要とするソフトウエア15の部分を含むメモリセクション14に対するアクセスを処理装置12の各々に供給するためにマルチプレクサ20および24を制御しようと試みる。
【0030】
アービタ30は、多くの異なる方法で実施することができる。いくつかの実施形態において、アービタ30は、2つの処理装置12が次のメモリアクセスサイクルで命令を読み出すメモリセクション14を相互交換するためにマルチプレクサ20および24を制御することができる。例えば、第1の処理装置12が、区画15Bに位置するソフトウエア15のPART(図4を参照)を必要とする場合を考える。区画15Bの各PARTは1つのメモリセクション14のみに位置するため、その第1の処理装置12は、ソフトウエア15の必要とされるPARTを含む特定のメモリセクション14に対してアクセスすることができない場合は、次のメモリアクセスサイクルで機能を停止する。次のメモリアクセスサイクルで、第1の処理装置12が通常は第1のメモリセクション14に対してアクセスし、第2の処理装置12は通常は第2のメモリセクション14に対してアクセスし、第2のメモリセクション(すなわち、通常は第2の処理装置12によってアクセス可能である)が第1の処理装置12によって必要とされるソフトウエア15のPARTを含むと仮定する。これらの状況下において、アービタ30は、次のメモリアクセスサイクルで第1の処理装置12が第2のメモリセクション14にアクセスし、第2の処理装置12が第1メモリセクション14にアクセスするように第1および第2のメモリセクション14に対するアクセスを交換することによって、次のメモリアクセスサイクルで機能停止する処理装置の数を削減することができるかどうかを決定する。もしできるなら、アービタ30は、この切り換えを実施するために第1および第2のメモリセクションに連動されるマルチプレクサ20および24を制御する。
【0031】
・もし第2の処理装置12が共用区画15A内のソフトウエアの部分を実行しているなら(この場合、第2の処理装置はどのメモリセクションにアクセスしたのかには関知しない);
・もし第2の処理装置12が区画15B内のソフトウエア15の部分を実行していて、第2の処理装置12によって必要とされるソフトウエアの部分が第2のメモリセクション14内に位置していないなら;または、
・(例えば、保全された、または、存在しないプログラムカウンタ数値、または、アービタ30に供給された(図示しない)別個の信号によって示されるように)第2の処理装置12が活動していないなら、機能を停止したプロセッサの数はそのような切り換えを行うことによって削減される。
【0032】
図6はアービタ30において実施することができる可能な論理を示す。ブロック40は、区画15Bからのソフトウエア15の部分を必要とする処理装置12があるかどうかを決定する。これは、問題の処理装置12のためのプログラムカウンタ数値を、メモリセクション14の領域14Aおよび14Bを分割する数値と比較することによって、いくつかの実施形態において達成することができる。ブロック42において、アービタ30は、そのような処理装置12がソフトウエア15の必要とされる部分を含むメモリセクション14に対するアクセスを通常は有するかどうかを決定するためにチェックを行う。いくつかの実施形態において、これは、プログラムカウンタ数値の最も低い次数のビットを検査することによって達成することができる。ブロック44において、アービタ30は交換が有益であるかどうか(すなわち、次のメモリアクセスサイクルで機能停止したいくつかのプロセッサを削減する)を決定する。もしそうであれば、ブロック46において、アービタ30は交換を実施する。
【0033】
アービタ30は、その出力においてマルチプレクサ20および24のための制御信号を作成する論理回路の形で実施することができる。アービタ30は様々な複雑さのレベルを有する様々なアーキテクチャを有することができる。単純なアービタ30は、例えば、単一の段における機能停止を削減しようと試みることができる。アービタ30は、例えば、次のメモリアクセスサイクルで機能停止するいくつかの処理装置12を削減するために、処理装置の1つまたは複数の対に連動するメモリセクション14を交換することができる。より複雑なアービタ30は、より緩慢な動作という犠牲を伴って更なる最適化を試みることができる。アービタ30は、ソフトウエア15が図2に示すように構成される場合に、ならびに、ソフトウエア15が図4に示すように構成される場合に使用することができる。
【0034】
表IIは、全ての処理装置12のためのプログラムカウンタ22が、区画15Aにあるソフトウエア15の部分を必要とするか、または、活動していないかのいずれかである特別な場合のためのアービタ30の1つの実施形態のための真理値表を与える。これらのプロセッサ要件は、表IIの左手側の欄にある文字「A」によって示され、これは処理装置12−0から12−3までの各々に対応する。処理装置12の各々がいずれのメモリセクション14に対するアクセスによっても満足されるため、アービタ30は、処理装置12へのメモリセクション14の割り当てを変更する必要がない。これらのメモリセクションの割り当ては、表IIの右手側の欄にある数0〜3によって示され、これらは処理装置12−0から12−3までの各々に対応する。処理装置12−0のためのこの欄の数0は、例えば、次のメモリサイクルで、処理装置12−0が、次のメモリアクセスサイクルにおいて処理装置12−0に通常は割り当てられるメモリセクション14にアクセスすることを示す。
【表2】
Figure 2004038959
【0035】
表III−0からIII−3までは、(i)処理装置12の3つのためのプログラムカウンタ22が、区画15Aにあるソフトウエア15の部分を必要とするか、または、活動していないかのいずれかである場合、および、(ii)処理装置12−0の1つのためのプログラムカウンタ22が特定のメモリセクション14に対するアクセスを必要とする場合のためのアービタ30の1つの実施形態のための真理値表を与える。
【表3】
Figure 2004038959
【表4】
Figure 2004038959
【表5】
Figure 2004038959
【表6】
Figure 2004038959
【0036】
処理装置12の2、3、または、4が特定のメモリセクション14に対するアクセスを必要とする場合のためのアービタ真理値表は、上記を拡張することによって提供することができる。表IVは、処理装置12−0および12−1が、各々、特定のメモリセクション14に対するアクセスを必要とする場合のための可能な真理値表である。
【表7】
Figure 2004038959
【0037】
図8に模式的に示すように、本発明は、処理装置12およびメモリ13の双方を搭載するASIC50において具体化することができる。いくつかの実施形態において、単一のASIC50は処理装置12の複数のグループ52を搭載し、各グループ52も連動するメモリ構造13を含む。各グループ52は、例えば、4〜16個の処理装置12を含むことができる。各グループ52が、2個の処理装置12、および、2個のメモリセクション14を有するメモリ構造13を有することが便利である。図8に模式的に示すASICは、8個の処理装置12の5つのグループ52ならびに(図示しない)他の回路を有する。ASIC50は、グループ52のメモリ構造13に保存されるべきソフトウエアを受け取り(ソフトウエアは、例えば、チップ外のソースから受け取ることができる)、かつ、全てのグループ52のメモリ構造13に受け取ったソフトウエアを同時に書き込むように構成されるメモリ書き込み回路54を含むことができる。
【0038】
構成要素(例えば、ソフトウエアモジュール、プロセッサ、アセンブリ、装置、回路など)が上記を参照する場合、特に断らない限り、(「手段」に対する参照を含めて)その構成要素に対する参照は、その構成要素の均等物として、説明されている構成要素の機能を実行する(すなわち、機能的に等価である)いかなる構成要素も含むと解釈するべきであり、開示されている構造と構造的に等価ではないが、本発明の例示的実施形態の機能を実行する構成要素を含む。
【0039】
前述の開示に照らして当業者には明らかなように、多くの変形および変更は、本発明の精神または範囲から逸脱することなく、本発明の実行において可能である。例えば、
・本発明は、画像処理、ネットワーク処理、デジタル信号処理、または、共通の命令メモリからの命令を実行するいくつかの処理装置を有することが望ましいいかなる他の分野にも適用することができる。
【0040】
・入力マルチプレクサ20および出力マルチプレクサ24を制御するために、別個のカウンタ25を設けることは必要ではない。マルチプレクサに適する制御信号を生成する状態機械またはいくつかの状態機械を代わりに使用することができる。マルチプレクサの各々に適する制御信号を搬送するための論理と連動する単一のカウンタも使用することができる。
【0041】
・メモリセクション14の数がそれらのメモリセクション14によってサービスされる処理装置12の数に等しいことは必要ではない。処理装置12より多くのメモリセクション14があってもよい。
【0042】
・アービタ30が設けられる場合、アービタ30の能力によっては、特定の処理装置12が通常はアクセスを有するメモリセクション14が、例えば図3を参照して説明される利用可能なメモリセクション14の全ての間で順次交代されることは必要ではないことがある。アービタ30は機能停止を最小に抑え、かつ、処理装置12のいずれにも不公平ではない方法で各メモリアクセスサイクルについてメモリセクション14に各処理装置を割り当てることができる。アービタ30は、特定の処理装置12に優先権を与えるためのメカニズムを含むことができる。
【0043】
・メモリセクションは本明細書において同時アクセス可能であると説明される一方、これは、ソフトウエアのその部分のみが単一のメモリアクセスサイクルにおいてメモリセクションの各々から読み出すことができることを意味する。
【0044】
・メモリセクションアクセスコントロールが図1に示すカウンタ25を含む場合、各メモリセクションに対応する別個のカウンタ25がある必要はない。単一のカウンタ25は、図7に示す入力および出力マルチプレクサの全てのための適するメモリセクション選択数値25−0、25−1、25−2、および、25−3を生成するために使用することができる。
【0045】
・出力マルチプレクサを図1に示すように構成する必要はない。図9に示す他の実施形態10”において、各メモリセクション14は出力多重分離器24’と連動する。特定のメモリセクション14の出力はその対応する出力多重分離器24’の入力に接続され、出力多重分離器24’の4つの出力は個々の処理装置12に接続される。このような構成の場合、各多重分離器24’のための制御入力25’は、その多重分離器24’に接続される他の処理装置12の間からデータを受け取るために処理装置12の特定の1つを選択するために動作する。
【0046】
・同様に、入力マルチプレクサを図1に示すように構成することは必要でない。図9に示す他の実施形態10”において、各処理装置12は入力多重分離器20’と連動する。特定の処理装置12のプログラムカウンタは、その対応する入力多重分離器20’の入力に接続され、入力多重分離器20’の4つの出力はそれぞれメモリセクション14に接続される。このような構成の場合、各多重分離器20’のための制御入力25’は、その多重分離器20’に接続される他のメモリセクションの間から命令要求を受け取るためにメモリセクション14の特定の1つを選択するために動作する。
【0047】
したがって、本発明の範囲は、冒頭の特許請求の範囲によって規定される趣旨に従って解釈される。
【図面の簡単な説明】
【0048】
【図1】本発明の1つの実施形態による処理装置のセットのための命令メモリアーキテクチャの模式図である。
【図2】図1の命令メモリアーキテクチャにおける命令の可能な構成の模式図である。
【図3】図1の命令メモリアーキテクチャにおけるメモリセグメントへのアクセスを備えた処理装置を提供するための単純なラウンドロビン方式を制御するための1つの方法を示す図である。
【図4】図1の命令メモリアーキテクチャにおける命令の更なる可能な構成の模式図である。
【図5】アービタを含む、本発明の他の実施形態による処理装置のセットのための命令メモリアーキテクチャの模式図である。
【図6】図5のアービタにおいて実施することができるアルゴリズムを示すフロー図である。
【図7】メモリセクション選択数値を生成するための2ビットカウンタの使用を示す図である。
【図8】処理装置の各グループが共用メモリ構造を有する処理装置の複数のグループを有するASICを示す図である。
【図9】本発明の代案となる実施形態による処理装置のセットのための命令メモリアーキテクチャの模式図である。
【符号の説明】
【0049】
10 マルチプロセッサデータ処理デバイス
12 処理装置
13 メモリ構造
14 メモリセクション
15 ソフトウエアプログラム
17 命令バス
20 入力マルチプレクサ
20’ 入力多重分離器
22 プログラムカウンタ
24 出力マルチプレクサ
24’ 出力多重分離器
25 カウンタ
30 アービタ
50 ASIC
52 グループ
54 メモリ書き込み回路

Claims (32)

  1. 複数の処理装置と、
    複数の同時アクセス可能なメモリセクションを含み、該メモリセクションの数が前記処理装置の数と少なくとも等しく、複数の連続する部分を含むソフトウエアを、該連続する部分が前記メモリセクションに割当てられて連続するメモリセクション内に存するように、保持することができるメモリ構造と、
    前記処理装置と前記メモリ構造との間に接続されたメモリセクションアクセスコントロールであって、複数の連続するメモリアクセスサイクルの各々で、前記処理装置の各々がメモリセクションの異なる1つからソフトウエアの部分の1つを読み出すことを可能にするように構成され、前記処理装置の少なくとも1つが、連続したメモリアクセスサイクルで、連続する複数の前記メモリセクションから前記ソフトウエアの連続する複数の部分を読み出すことを可能にするメモリセクションアクセスコントロールとを含む装置。
  2. 前記メモリセクションアクセスコントロールが、前記複数の処理装置の各々が、連続するメモリアクセスサイクルで、連続する複数の前記メモリセクションから連続する複数の前記ソフトウエアの部分を読み出すことを可能にするように構成される請求項1に記載の装置。
  3. 前記処理装置の各々に連動するプログラムカウンタを含み、前記メモリセクションアクセスコントロールが複数の入力マルチプレクサを含み、前記複数のマルチプレクサの1つがメモリセクションの各々と連動し、前記入力マルチプレクサの各々が、前記プログラムカウンタの各々から数値を受け取るために接続された複数の入力、および、前記プログラムカウンタの1つから連動するメモリセクションに前記数値を提供するために接続された出力を有する請求項2に記載の装置。
  4. 前記入力マルチプレクサの各々が制御入力を含み、前記メモリセクションアクセスコントロールが、前記メモリアクセスサイクルの各々において前記入力マルチプレクサ制御入力の各々にメモリセクション選択数値を提供するように構成され、前記制御入力の各々における前記メモリセクション選択数値が前記処理装置の異なる1つに対応し、前記入力マルチプレクサ制御入力の各々における前記メモリセクション選択数値が、各メモリアクセスサイクルにおいて変化し、前記処理装置の全てに対応する数値を介して循環する請求項3に記載の装置。
  5. 整数mについて2個の処理装置を含み、前記メモリセクションアクセスコントロールがmビットのカウンタを含み、前記入力マルチプレクサ制御入力の1つにおけるメモリセクション選択数値が前記mビットのカウンタの出力を含む請求項4に記載の装置。
  6. 前記メモリセクションアクセスコントロールが複数の出力マルチプレクサを含み、該出力マルチプレクサの各々が、前記処理装置の1つの命令バスに接続された出力および複数の入力を有し、各入力が前記メモリセクションの1つからソフトウエアの部分を受け取るために接続されている請求項5に記載の装置。
  7. 前記出力マルチプレクサが、各々、前記入力マルチプレクサの対応する1つのメモリセクション選択数値を受け取るために接続される制御入力を含む請求項6に記載の装置。
  8. 前記処理装置の各々の命令バスがソフトウエアの部分の各々のサイズに等しい幅を有する請求項7に記載の装置。
  9. 前記ソフトウエアの部分の各々が単一の命令で構成される請求項8に記載の装置。
  10. 前記命令バスが8ビット、16ビット、および、32ビットのうちの1つの幅を有する請求項8に記載の装置。
  11. 整数mについて2個のメモリセクションを含み、前記メモリセクションアクセスコントロールがmビットのカウンタを含み、前記mビットのカウンタの出力が、前記処理装置の少なくとも1つに、連続するメモリアクセスサイクルで連続する複数の前記メモリセクションから連続する複数の前記ソフトウエアの部分を検索させるように接続されている請求項2に記載の装置。
  12. 前記mが2から4までの範囲にある請求項11に記載の装置。
  13. 前記メモリセクションアクセスコントロールが複数の出力マルチプレクサを含み、該出力マルチプレクサの各々が、前記処理装置の1つの命令バスに接続された出力および複数の入力を有し、各入力が前記メモリセクションの1つから前記ソフトウエアの部分を受け取るために接続されている請求項1に記載の装置。
  14. 前記メモリセクションアクセスコントロールが前記メモリアクセスサイクルの各々において入力される前記出力マルチプレクサ制御入力の各々にメモリセクション選択数値を提供するように構成され、前記出力マルチプレクサ制御入力の各々で前記メモリセクション選択数値が前記処理装置の異なる1つに対応し、前記出力マルチプレクサ制御入力の各々での前記メモリセクション選択数値は、各メモリアクセスサイクルにおいて変化し、前記処理装置の全てに対応する数値を繰り返す請求項13に記載の装置。
  15. 前記処理装置の各々の命令バスが前記ソフトウエアの部分の各々のサイズに等しい幅を有する請求項14に記載の装置。
  16. 前記ソフトウエアの部分の各々が単一の命令から構成される請求項15に記載の装置。
  17. 前記命令バスが8ビット、16ビット、および、32ビットのうちの1つの幅を有する請求項14に記載の装置。
  18. 前記メモリセクションの各々が第1の領域および第2の領域を含み、前記ソフトウエアが、前記第1の領域内に部分の第1のセットを含む第1の区画、および、前記第2の領域内に部分の第2のセットを含む第2の区画を含み、前記メモリセクションの各々の前記第1の領域が前記ソフトウエアの前記第1の区画の全ての部分を含み、前記ソフトウエアの前記第2の区画の部分が前記メモリセクションの前記第2の領域に割当てられる請求項1に記載の装置。
  19. 前記第1の領域と前記第2の領域との間の境界の位置が設定可能である請求項18に記載の装置。
  20. 前記メモリセクションアクセスコントロールがアービタを含み、前記アービタが、メモリアクセスサイクルの後に機能停止する処理装置を削減するために、前記処理装置の1以上の対に連動する前記メモリセクションを交換するように構成される請求項1に記載の装置。
  21. 請求項1が単一の集積回路に具体化される装置。
  22. 前記単一の集積回路が複数のグループを含み、各グループが複数の処理装置、連動するメモリ構造、および、連動メモリセクションアクセスコントロールを含む請求項21に記載の装置。
  23. 前記メモリ構造に保存されるソフトウエアを受け取るように、また、同時に、前記グループの全ての前記メモリ構造に受け取ったソフトウエアを書き込むように構成されるメモリ書き込み回路を含む請求項22に記載の装置。
  24. 前記メモリセクションアクセスコントロールが複数の出力マルチプレクサを含み、該出力マルチプレクサの各々が、前記メモリセクションの1つから前記ソフトウエアの部分の1つを受け取るために接続された入力、および、複数の出力を有し、前記複数の出力の各々が前記処理装置の1つの命令バスに接続される請求項5に記載の装置。
  25. 前記メモリセクションアクセスコントロールが複数の出力マルチプレクサを含み、該出力マルチプレクサの各々が、前記メモリセクションの連動する1つから前記ソフトウエアの部分の1つを受け取るために接続された入力、および、複数の出力を有し、前記複数の出力の各々が前記処理装置の1つの命令バスに接続されている請求項1に記載の装置。
  26. 複数の処理装置に、該複数の処理装置によって実行されるソフトウエアを含む共用命令メモリへのアクセスを提供するための方法であって、
    連続する部分が連続するメモリセクションに存するように、複数の同時アクセス可能メモリセクションに前記ソフトウエアを割当てるステップと、
    複数のメモリアクセスサイクルの各々において、前記処理装置の各々について、前記メモリセクションの異なる1つから前記ソフトウエアの部分を読み出すステップ、および、
    連続する前記メモリアクセスサイクルにおいて、前記処理装置の少なくとも1つについて、連続する複数の前記メモリセクションから前記ソフトウエアの連続する複数の部分を読み出すステップを含む方法。
  27. 連続する複数の前記メモリアクセスサイクルのにおいて、全ての前記処理装置について、連続する複数の前記メモリセクションから前記ソフトウエアの連続する複数の部分を読み出すステップを含む請求項26に記載の方法。
  28. メモリアクセスサイクルの後に機能停止する処理装置を削減するために、前記処理装置の1以上の対に連動する前記メモリセクションを相互交換するステップを含む請求項26に記載の方法。
  29. 前記部分の各々が単一の命令から構成される請求項26に記載の方法。
  30. 前記命令が8ビット、16ビット、および、32ビットのうちの1つの長さを有する請求項29に記載の方法。
  31. 複数の処理装置に、該複数の処理装置によって実行されるソフトウエアを含む共用命令メモリへのアクセスを提供するための方法であって、
    前記ソフトウエアの連続する部分が連続するメモリセクションにに存するように、複数の同時アクセス可能メモリセクションに割当てられた前記ソフトウエアを提供するステップと、
    連続するメモリサイクルにおいて、前記処理装置の各々を前記メモリセクションの1つと連動させ、前記プロセッサの各々が、前記連動するメモリセクションから前記ソフトウエアの部分を読み出すことを可能にするステップ、および、
    連続するメモリアクセスサイクルにおいて、各処理装置が連続する複数の前記メモリセクションから前記ソフトウエアの連続する複数の部分にアクセスできるように、前記処理装置と前記メモリセクションとの間の連動を順次交代させるステップを含む方法。
  32. メモリアクセスサイクルの後に機能停止する処理装置を削減するために前記処理装置の1以上の対に連動される前記メモリセクションを交換するステップを含む請求項31に記載の方法。
JP2003171623A 2002-06-19 2003-06-17 共用プログラムメモリを有するマルチプロセッサ計算装置 Pending JP2004038959A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/173,589 US7328314B2 (en) 2002-06-19 2002-06-19 Multiprocessor computing device having shared program memory

Publications (1)

Publication Number Publication Date
JP2004038959A true JP2004038959A (ja) 2004-02-05

Family

ID=29733389

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003171623A Pending JP2004038959A (ja) 2002-06-19 2003-06-17 共用プログラムメモリを有するマルチプロセッサ計算装置

Country Status (4)

Country Link
US (1) US7328314B2 (ja)
EP (1) EP1496445A3 (ja)
JP (1) JP2004038959A (ja)
CN (1) CN100354851C (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7554909B2 (en) * 2005-03-21 2009-06-30 Intel Corporation Dynamic service management for multicore processors
US7500066B2 (en) * 2005-04-30 2009-03-03 Tellabs Operations, Inc. Method and apparatus for sharing instruction memory among a plurality of processors
DE102005053681A1 (de) * 2005-11-10 2007-05-16 Bosch Gmbh Robert Verfahren zur Nutzung eines Speichers
US20090133022A1 (en) * 2007-11-15 2009-05-21 Karim Faraydon O Multiprocessing apparatus, system and method
US8930644B2 (en) 2008-05-02 2015-01-06 Xilinx, Inc. Configurable transactional memory for synchronizing transactions
KR100960148B1 (ko) * 2008-05-07 2010-05-27 한국전자통신연구원 데이터 프로세싱 회로
CN101290592B (zh) * 2008-06-03 2010-10-13 浙江大学 一种mpsoc上多道程序共享spm的实现方法
CN101799750B (zh) * 2009-02-11 2015-05-06 上海芯豪微电子有限公司 一种数据处理的方法与装置
US9676511B2 (en) 2009-09-25 2017-06-13 Multi Packaging Solutions, Inc. Foldable packaging container
US7959061B2 (en) * 2009-09-25 2011-06-14 Multi Packaging Solutions, Inc. Folded pot cover
US8561078B2 (en) * 2011-09-27 2013-10-15 Throughputer, Inc. Task switching and inter-task communications for multi-core processors
US20130117168A1 (en) 2011-11-04 2013-05-09 Mark Henrik Sandstrom Maximizing Throughput of Multi-user Parallel Data Processing Systems
US8490111B2 (en) * 2011-04-16 2013-07-16 Throughputer, Inc. Efficient network and memory architecture for multi-core data processing system
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
GB2490766B (en) * 2011-04-16 2013-04-24 Mark Henrik Sandstrom Task switching and inter-task communications for multi-core processors
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US9304940B2 (en) 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory
RU2591180C1 (ru) * 2015-05-29 2016-07-10 Юрий Анатольевич Ткаченко Защищенный компьютер, сохраняющий работоспособность при повреждении
EP3292472A1 (en) * 2015-07-30 2018-03-14 Hewlett-Packard Enterprise Development LP Memory access control method and system
US10776311B2 (en) * 2017-03-14 2020-09-15 Azurengine Technologies Zhuhai Inc. Circular reconfiguration for a reconfigurable parallel processor using a plurality of chained memory ports
CN109491785B (zh) * 2018-10-24 2021-01-26 龙芯中科技术股份有限公司 内存访问调度方法、装置及设备
CN116820344B (zh) * 2023-07-03 2024-04-26 摩尔线程智能科技(北京)有限责任公司 存储器访问电路及存储器访问方法、集成电路和电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3931613A (en) * 1974-09-25 1976-01-06 Data General Corporation Data processing system
US4034347A (en) * 1975-08-08 1977-07-05 Bell Telephone Laboratories, Incorporated Method and apparatus for controlling a multiprocessor system
JP2539352B2 (ja) * 1984-06-20 1996-10-02 株式会社日立製作所 階層型多重計算機システム
US4818932A (en) * 1986-09-25 1989-04-04 Tektronix, Inc. Concurrent memory access system
DE58901442D1 (de) * 1988-02-18 1992-06-25 Siemens Ag Schaltungsanordnung zur anpassung eines langsamen speichers an einen schnellen prozessor.
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
US5581734A (en) * 1993-08-02 1996-12-03 International Business Machines Corporation Multiprocessor system with shared cache and data input/output circuitry for transferring data amount greater than system bus capacity
JP3661249B2 (ja) * 1995-11-15 2005-06-15 株式会社日立製作所 マルチプロセッサシステム
US5848241A (en) * 1996-01-11 1998-12-08 Openframe Corporation Ltd. Resource sharing facility functions as a controller for secondary storage device and is accessible to all computers via inter system links
JPH11250028A (ja) * 1998-02-27 1999-09-17 Hitachi Ltd マイクロプログラムの高速ローディング方法及び制御装置
FR2797969A1 (fr) * 1999-08-31 2001-03-02 Koninkl Philips Electronics Nv Dispositif a plusieurs processeurs partageant une memoire collective
US6457100B1 (en) * 1999-09-15 2002-09-24 International Business Machines Corporation Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls

Also Published As

Publication number Publication date
EP1496445A3 (en) 2007-11-21
CN1484169A (zh) 2004-03-24
US7328314B2 (en) 2008-02-05
US20030235200A1 (en) 2003-12-25
CN100354851C (zh) 2007-12-12
EP1496445A2 (en) 2005-01-12

Similar Documents

Publication Publication Date Title
JP2004038959A (ja) 共用プログラムメモリを有するマルチプロセッサ計算装置
US10282338B1 (en) Configuring routing in mesh networks
US6334175B1 (en) Switchable memory system and memory allocation method
US7360064B1 (en) Thread interleaving in a multithreaded embedded processor
US8737392B1 (en) Configuring routing in mesh networks
US10268392B2 (en) Memory controller architecture with improved memory scheduling efficiency
US8245014B2 (en) Thread interleaving in a multithreaded embedded processor
US8151088B1 (en) Configuring routing in mesh networks
US20120291037A1 (en) Method and apparatus for prioritizing processor scheduler queue operations
EP1058890B1 (en) System and method for dynamic priority conflict resolution in a multi-processor computer system having shared memory resources
US20030188107A1 (en) External bus transaction scheduling system
EP1665065B1 (en) Integrated data processing circuit with a plurality of programmable processors
US20100325327A1 (en) Programmable arbitration device and method therefor
US7263604B2 (en) Heterogeneous parallel multithread processor (HPMT) with local context memory sets for respective processor type groups and global context memory
GB2471067A (en) Shared resource multi-thread array processor with heterogeneous function blocks
EP0334954A1 (en) Layered network
US10740269B2 (en) Arbitration circuitry
WO2017040697A1 (en) System and method of accelerating arbitration by approximating relative ages
WO2006090108A1 (en) Microprocessor architectures
IL264794B2 (en) Scheduling of tasks on a multi-processor device
US7315935B1 (en) Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots
Ausavarungnirun Techniques for shared resource management in systems with throughput processors
US7178008B2 (en) Register access scheduling method for multi-bank register file of a super-scalar parallel processor
US6249855B1 (en) Arbiter system for central processing unit having dual dominoed encoders for four instruction issue per machine cycle
WO1999059048A9 (en) Transpose table biased arbitration scheme

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100302