IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特開-マルチダイパッケージ 図1
  • 特開-マルチダイパッケージ 図2
  • 特開-マルチダイパッケージ 図3
  • 特開-マルチダイパッケージ 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024000230
(43)【公開日】2024-01-05
(54)【発明の名称】マルチダイパッケージ
(51)【国際特許分類】
   G06F 13/362 20060101AFI20231225BHJP
   G06F 15/78 20060101ALI20231225BHJP
   G06F 12/0806 20160101ALI20231225BHJP
   G06F 12/00 20060101ALI20231225BHJP
   G06F 13/16 20060101ALI20231225BHJP
【FI】
G06F13/362 510B
G06F15/78 570
G06F12/0806 100
G06F12/00 571A
G06F13/16 510F
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022098904
(22)【出願日】2022-06-20
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100107515
【弁理士】
【氏名又は名称】廣田 浩一
(72)【発明者】
【氏名】松森 和
【テーマコード(参考)】
5B062
5B160
5B205
【Fターム(参考)】
5B062BB07
5B062CC10
5B160CD11
5B160MM01
5B205KK14
5B205MM02
5B205NN73
(57)【要約】
【課題】複数のダイに搭載されるサービスプロセッサからのリード要求を調停するアービタが直列に接続される場合に、調停により選択されたリード要求に応じてメモリから出力される命令の複数のダイへの転送時間を短縮する。
【解決手段】各ダイは、プロセッサコアとサービスプロセッサとキャッシュメモリとアービタとを有する。複数のダイに搭載される複数のアービタは直列に接続される。最終段のアービタを除くアービタは、自ダイのサービスプロセッサおよび前段のアービタからのリード要求を調停して次段のアービタに出力する。最終段のアービタは、自ダイのサービスプロセッサおよび前段のアービタからのリード要求とを調停してメモリに出力する。複数のダイのキャッシュメモリは、自ダイおよび他のダイのサービスプロセッサが出力したリード要求に応じてメモリから出力される命令を、リード要求に対応付けて保持する。
【選択図】図1
【特許請求の範囲】
【請求項1】
プロセッサコアと、サービスプロセッサと、前記サービスプロセッサが実行する命令を保持するキャッシュメモリと、前記サービスプロセッサから発行されるリード要求を調停するアービタとをそれぞれ有する複数のダイが搭載されたマルチダイパッケージであって、
前記複数のダイにそれぞれ搭載される複数の前記アービタは、直列に接続され、
初段のアービタおよび最終段のアービタとを除くアービタは、自ダイの前記サービスプロセッサからのリード要求と、前段のアービタの調停により選択されたリード要求とを調停し、調停により選択したリード要求を次段のアービタに出力し、
前記最終段のアービタは、自ダイの前記サービスプロセッサからのリード要求と、前段のアービタの調停により選択されたリード要求とを調停し、調停により選択したリード要求をメモリに出力し、
前記複数のダイの前記キャッシュメモリは、自ダイおよび他のダイの前記サービスプロセッサが出力したリード要求に応じて前記メモリから出力される命令を、前記リード要求に対応付けて保持する
マルチダイパッケージ。
【請求項2】
前記最終段のアービタが前記メモリに出力するリード要求を、前記複数のダイの前記キャッシュメモリに転送する共通の第1信号線と、
前記最終段のアービタが出力するリード要求に応じて前記メモリから出力される命令を、前記複数のダイの前記キャッシュメモリに転送する共通の第2信号線と、を有する
請求項1に記載のマルチダイパッケージ。
【請求項3】
前記複数のダイの各々の前記キャッシュメモリは、自ダイの前記サービスプロセッサが出力したリード要求に含まれるアドレスと同じアドレスを含むリード要求を前記最終段のアービタから受信した場合、受信したリード要求に対応して前記メモリから出力される命令を保持する
請求項2に記載のマルチダイパッケージ。
【請求項4】
前記複数のダイの各々の前記サービスプロセッサは、
前記最終段のアービタが出力するリード要求を、前記第1信号線を介して受信し、
前記メモリが出力する命令を、前記第2信号線を介して受信し、
自ダイのアービタに出力したリード要求に含まれるアドレスと同じアドレスを含むリード要求に対応する命令を受信した場合、受信した命令をフェッチする
請求項2に記載のマルチダイパッケージ。
【請求項5】
前記複数のダイの各々の前記サービスプロセッサは、自ダイのアービタに出力したリード要求に含まれるアドレスと同じアドレスを含む、他のダイの前記サービスプロセッサが出力したリード要求に対応する命令を受信した場合、自ダイのアービタに出力したリード要求を取り下げる
請求項4に記載のマルチダイパッケージ。
【請求項6】
前記アービタは、自ダイの前記サービスプロセッサが出力するリード要求と、前段のアービタから受信するリード要求とが競合する場合、リード要求を交互に選択する
請求項1ないし請求項5のいずれか1項に記載のマルチダイパッケージ。
【請求項7】
前記アービタは、リード要求の競合時に自ダイの前記サービスプロセッサが出力するリード要求の選択頻度を、前段の前記アービタから受信するリード要求の選択頻度より低くする
請求項1ないし請求項5のいずれか1項に記載のマルチダイパッケージ。
【請求項8】
前記複数のダイの各々は、前記プロセッサコアにより複数種の処理のいずれかを実行し、
前記複数のダイの各々の前記サービスプロセッサが実行する命令は、自ダイで実行する処理に対応して自ダイを初期化する命令である
請求項1ないし請求項5のいずれか1項に記載のマルチダイパッケージ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチダイパッケージに関する。
【背景技術】
【0002】
バスを介して共有メモリに接続される複数のプロセッサユニットの各々に含まれるアービタを直列に接続したアービタチェーンを使用して、プロセッサユニットのいずれかに優先権を与えるシステムが知られている。バスの使用権が与えられたプロセッサユニットは、共有メモリにアクセスし、あるいは、割り込み処理を実行させる1以上のプロセッサユニットの識別番号を、共通の割り込み信号とともに出力する(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開昭58-197568号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、上記システムの起動時、複数のプロセッサユニットのCPU(Central Processing Unit)がそれぞれ発行するリード要求のうち、アービタによる調停で選択されたCPUから発行されたリード要求が共有メモリに出力される。そして、リード要求に応答して共有メモリから出力されるCPU用の命令は、リード要求の発行元のプロセッサユニットのローカルメモリに格納される。
【0005】
アービタにより順次選択される他のプロセッサユニットのCPUが発行するリード要求も共有メモリに順次発行され、共有メモリから出力される命令がリード要求の発行元のプロセッサユニットのローカルメモリに順次格納される。しかしながら、システムの起動時、複数のプロセッサユニットのローカルメモリに命令が順次格納される場合、システム内のローカルメモリへの命令の転送時間は、プロセッサユニットの数が多いほど長くなる。
【0006】
1つの側面では、本発明は、複数のダイに搭載されるサービスプロセッサからのリード要求を調停するアービタが直列に接続される場合に、調停により選択されたリード要求に応じてメモリから出力される命令の複数のダイへの転送効率を向上することを目的とする。
【課題を解決するための手段】
【0007】
一つの観点によれば、マルチダイパッケージは、プロセッサコアと、サービスプロセッサと、前記サービスプロセッサが実行する命令を保持するキャッシュメモリと、前記サービスプロセッサから発行されるリード要求を調停するアービタとをそれぞれ有する複数のダイが搭載されたマルチダイパッケージであって、前記複数のダイにそれぞれ搭載される複数の前記アービタは、直列に接続され、初段のアービタおよび最終段のアービタとを除くアービタは、自ダイの前記サービスプロセッサからのリード要求と、前段のアービタの調停により選択されたリード要求とを調停し、調停により選択したリード要求を次段のアービタに出力し、前記最終段のアービタは、自ダイの前記サービスプロセッサからのリード要求と、前段のアービタの調停により選択されたリード要求とを調停し、調停により選択したリード要求をメモリに出力し、前記複数のダイの前記キャッシュメモリは、自ダイおよび他のダイの前記サービスプロセッサが出力したリード要求に応じて前記メモリから出力される命令を、前記リード要求に対応付けて保持する。
【発明の効果】
【0008】
複数のダイに搭載されるサービスプロセッサからのリード要求を調停するアービタが直列に接続される場合に、調停により選択されたリード要求に応じてメモリから出力される命令の複数のダイへの転送時間を短縮することができる。
【図面の簡単な説明】
【0009】
図1】一実施形態におけるマルチダイパッケージの一例を示すブロック図である。
図2図1のダイD2の一例を示すブロック図である。
図3図1のダイDnの一例を示すブロック図である。
図4図3のダイDnのSPIコントローラおよびアービタの動作の一例を示すタイミング図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して、実施形態が説明される。
【0011】
図1は、一実施形態におけるマルチダイパッケージの一例を示す。図1に示すマルチダイパッケージ100は、n個のダイD(D1、D2、...、Dn)とROM60とを有する。例えば、マルチダイパッケージ100は、サーバまたはスーパーコンピュータ等の情報処理装置に搭載される。各ダイDは、複数のコア10、サービスプロセッサ20、キャッシュメモリ30、SPI(Serial Peripheral Interface:登録商標)コントローラ40およびアービタ50を有する。
【0012】
複数のダイDは、各コア10が実行する情報処理プログラムにより複数の処理機能のいずれかをそれぞれ実現する。例えば、複数の処理機能として、マルチダイパッケージ100の全体の統括機能、計算処理機能およびI/Oデバイスの処理機能がある。コア10は、プロセッサコアの一例である。
【0013】
サービスプロセッサ20は、マルチダイパッケージ100の起動時に、初期化プログラムを実行し、自ダイDで実現する処理機能に合わせて自ダイDを初期化する。自ダイDの初期化は、自ダイDに搭載されるコア10の初期化を含む。サービスプロセッサ20は、自ダイDの初期化を完了した後、コア10にクロックを供給し、コア10のリセットを解除する。これにより、コア10が動作を開始し、所定の処理機能が実現される。
【0014】
キャッシュメモリ30は、サービスプロセッサ20が実行する初期化プログラム(命令)の少なくとも一部を保持する。例えば、キャッシュメモリ30は、セットアソシアティブ方式を採用しており、アクセスアドレスのうちの所定数のビットで示されるインデックスアドレス毎にデータを保持する少なくとも1つのデータ領域を有する。キャッシュメモリ30は、キャッシュミスしたアクセスアドレスに含まれるインデックスアドレスにより示されるデータ領域が他のアドレスのデータで満杯な場合、データ領域に保持しているデータを追い出すリプレース処理を実行する。
【0015】
例えば、n個のダイDの1つは、マルチダイパッケージ100の全体の動作を統括する処理を各コア10で実行する統括処理用のダイDである。例えば、統括処理用のダイDのサービスプロセッサ20は、自ダイDを統括処理用に設定する初期化プログラムと、全てのダイDに共通の初期化プログラムとを実行することで、ダイDを初期化する。
【0016】
例えば、n個のダイDのうちの所定数のダイDは、計算処理を各コア10で実行する計算処理用のダイDである。例えば、計算処理用のダイDのサービスプロセッサ20は、自ダイDを計算処理用に設定する初期化プログラムと、全てのダイDに共通の初期化プログラムとを実行することで、ダイDを初期化する。
【0017】
例えば、n個のダイDのうちの別の所定数のダイDは、マルチダイパッケージ100のI/O(Input/Output)インタフェースを介してI/Oデバイスに接続され、I/O処理を各コア10で実行するI/O処理用のダイDである。例えば、I/O処理用のダイDのサービスプロセッサ20は、自ダイDをI/O処理用に設定する初期化プログラムと、全てのダイDに共通の初期化プログラムとを実行することで、ダイDを初期化する。
【0018】
サービスプロセッサ20は、マルチダイパッケージ100の起動(例えば、パワーオン)に基づいて、初期化プログラムの命令をフェッチするリード要求(リードコマンドとアドレス)を発行する。サービスプロセッサ20は、リード要求に対応するデータがキャッシュメモリ30に保持されている場合(キャッシュヒット)、キャッシュメモリ30に保持されたデータを命令としてフェッチする。サービスプロセッサ20は、リード要求に対応するデータがキャッシュメモリ30に保持されていない場合(キャッシュミス)、リード要求をSPIコントローラ40に発行する。なお、キャッシュメモリ30は、揮発性メモリであるため、マルチダイパッケージ100の起動時にデータを保持していない。
【0019】
なお、SPIコントローラ40へのリード要求は、サービスプロセッサ20の代わりにキャッシュメモリ30から発行されてもよい。この場合、キャッシュメモリ30は、キャッシュミスを判定したときにSPIコントローラ40にリード要求を発行する。
【0020】
SPIコントローラ40は、サービスプロセッサ20から受信するリード要求をアービタ50に転送する。なお、ダイDは、SPIコントローラ40の代わりに他のシリアルインタフェースのコントローラを有してもよく、メモリアクセスコントローラ等のパラレルインタフェースのコントローラを有してもよい。さらに、ダイDは、SPIコントローラ40を持たなくてもよい。この場合、サービスプロセッサ20は、リード要求をアービタ50に直接出力する。
【0021】
アービタ50は、前段のダイDからのリード要求と自SPIコントローラ40からのリード要求とを調停し、調停により選択したリード要求を次段のダイDのアービタ50またはROM60に出力する。すなわち、複数のダイDのアービタ50は、直列に接続される。
【0022】
初段のダイD1のアービタ50は、自SPIコントローラ40からのリード要求のみを受けるため、受けたリード要求を常に選択して出力する。最終段のダイDnのアービタ50を除くアービタ50は、調停により選択したリード要求を次段のダイDのアービタ50に出力する。ダイDnのアービタ50は、調停により選択したリード要求をリード要求RREQとしてROM60に出力する。ダイDnのアービタ50から出力されるリード要求RREQは、各ダイDのサービスプロセッサ20およびキャッシュメモリ30にも出力される。
【0023】
ROM60には、マルチダイパッケージ100内の全てのサービスプロセッサ20が実行する複数種の初期化プログラムが、マルチダイパッケージ100の起動前に予め格納される。例えば、ROM60は、シリアルインタフェースを有するフラッシュメモリである。ROM60は、ダイDnのアービタ50からのリード要求RREQに対応するデータ(すなわち、初期化プログラムの一部の命令)をデータDTとして出力する。ROM60は、メモリの一例である。
【0024】
各ダイDのサービスプロセッサ20は、ダイDnのアービタ50が出力するリード要求RREQと、ROM60から出力されるデータDTとを受信する。ダイDnのアービタ50から出力されるリード要求RREQを各ダイDのサービスプロセッサ20およびキャッシュメモリ30に転送する信号線は、第1信号線の一例である。ROM60から出力されるデータDTを各ダイDのサービスプロセッサ20およびキャッシュメモリ30に転送する信号線は、第2信号線の一例である。
【0025】
サービスプロセッサ20は、キャッシュミスに基づいてSPIコントローラ40に発行したリード要求に対応するデータDTを受信した場合、受信したデータDTを命令としてフェッチする。また、サービスプロセッサ20は、キャッシュミスに基づいてSPIコントローラ40に発行したリード要求のアドレスと同じ、他のダイDからのリード要求REQに対応するデータDTを受信した場合、受信したデータDTを命令としてフェッチする。
【0026】
このように、サービスプロセッサ20は、他のダイDのサービスプロセッサ20が発行したリード要求に対応するデータDTを命令としてフェッチすることができる。例えば、計算処理用のダイDのサービスプロセッサ20は、計算処理用の他のダイDのいずれかが発行した計算処理用の初期化プログラムのリード要求に対応するデータDTを受信することができる。また、全てのダイDのサービスプロセッサ20は、他のダイDのいずれかが発行した共通の初期化プログラムのリード要求に対応するデータDTを受信することができる。
【0027】
したがって、ダイD毎にROM60からキャッシュメモリ30に初期化プログラムが転送されることを抑制することができる。このため、初期化プログラムをダイD毎にROM60から転送する場合に比べて、マルチダイパッケージ100全体での初期化プログラムの転送時間を短縮することができ、サービスプロセッサ20による初期化処理を早期に完了することができる。この結果、マルチダイパッケージ100の起動からコア10が処理を開始するまでの時間である立ち上がり時間を、初期化プログラムをダイD毎にROM60から転送する場合の立ち上がり時間に比べて短縮することができる。
【0028】
また、サービスプロセッサ20は、キャッシュミスに基づいてSPIコントローラ40に発行したリード要求のアドレスと同じ、他のダイDからのリード要求REQに対応するデータDTを受信した場合、リード要求を取り下げる。これにより、同じアドレスのリード要求REQに対応するデータDTがROM60から複数回出力されることを抑止することができる。
【0029】
各ダイDのキャッシュメモリ30は、ダイDnのアービタ50が出力するリード要求RREQと、ROM60から出力されるデータDTとを受信する。そして、キャッシュメモリ30は、リード要求RREQに含まれるアドレスに対応するデータ領域を確保し、確保したデータ領域にデータDTを格納する。すなわち、キャッシュメモリ30は、リード要求RREQに対応付けてデータDTを保持する。
【0030】
これにより、キャッシュメモリ30は、自ダイDのキャッシュミスによりROM60に発行されたリード要求RREQだけでなく、他のダイDのキャッシュミスによりROM60に発行されたリード要求RREQに対応するデータDTを保持することができる。例えば、キャッシュメモリ30は、他のダイDから発行されたリード要求REQであって、自ダイDが発行したリード要求REQと同じアドレスのリード要求REQに対応してROM60から出力されるデータDTを保持する。
【0031】
なお、SPIコントローラ40へのリード要求がキャッシュメモリ30から発行される構成の場合、最終段のダイDnのアービタ50から出力されるリード要求RREQは、サービスプロセッサ20に転送されず、キャッシュメモリ30のみに転送される。そして、各ダイDのキャッシュメモリ30は、キャッシュミスしたリード要求と同じリード要求RREQに対応するデータDTを受信した場合、受信したデータDTを保持する。キャッシュメモリ30に保持されるデータDTは、サービスプロセッサ20にバイパスされてもよい。
【0032】
図2は、図1のダイD2の一例を示す。図1と同一または同様の要素については同じ符号を付し、詳細な説明は省略する。SPIコントローラ40は、リード要求端子REQ、アクノリッジ端子ACK、チップセレクト端子CS#およびデータ端子MOSI(Master-Out Slave-In)を有する。チップセレクト端子CS#の符号#は、チップセレクトCS#が負論理であることを示す。なお、SPIバスによるデータ等の転送は、クロックに同期して行われるが、図2から図4では、クロックの記載は省略される。
【0033】
アービタ50は、リード要求端子REQ1、REQ2、REQ3、アクノリッジ端子ACK1、ACK2、ACK3、チップセレクト端子CS1#、CS2#、CS3#およびデータ端子MOSI1、MOSI2、MOSI3を有する。チップセレクト端子CS1#、CS2#、CS3#およびデータ端子MOSI1、MOSI2、MOSI3には、SPIインタフェースの信号が供給される。データ端子MOSI1、MOSI2、MOSI3は、シリアル端子である。
【0034】
リード要求端子REQ1およびアクノリッジ端子ACK1は、前段のダイD1のアービタ50のリード要求端子REQ3およびアクノリッジ端子ACK3にそれぞれ接続される。チップセレクト端子CS1#およびデータ端子MOSI1は、前段のダイD1のアービタ50のチップセレクト端子CS3#およびデータ端子MOSI3にそれぞれ接続される。
【0035】
リード要求端子REQ2およびアクノリッジ端子ACK2は、自ダイD2のSPIコントローラ40のリード要求端子REQおよびアクノリッジ端子ACKにそれぞれ接続される。チップセレクト端子CS2#およびデータ端子MOSI2は、自ダイD2のSPIコントローラ40のチップセレクト端子CS#およびデータ端子MOSIにそれぞれ接続される。
【0036】
リード要求端子REQ3およびアクノリッジ端子ACK3は、次段のダイD3のアービタ50のリード要求端子REQ1およびアクノリッジ端子ACK1にそれぞれ接続される。チップセレクト端子CS3#およびデータ端子MOSI3は、次段のダイD3のアービタ50のチップセレクト端子CS1#およびデータ端子MOSI1にそれぞれ接続される。
【0037】
SPIコントローラ40は、キャッシュミスに基づくリード要求をサービスプロセッサ20から受信した場合、リード要求REQをアービタ50に出力し、アービタ50からのアクノリッジACK2を待つ。SPIコントローラ40は、アービタ50からアクノリッジACK2を受信した場合、チップセレクトCS#をアービタ50に出力する。また、SPIコントローラ40は、サービスプロセッサ20からのリード要求に含まれるリードコマンドとアドレスとをデータ端子MOSIからアービタ50にシリアル出力する。
【0038】
アービタ50は、リード要求REQ1、REQ2の一方のみを受信した場合、受信したリード要求REQ(REQ1またはREQ2)を選択し、選択したリード要求をリード要求REQ3として出力する。アービタ50は、リード要求REQ1、REQ2を重複して受信した場合(すなわち、リード要求REQ1、REQ2の競合時)、受信したリード要求REQ1、REQ2の一方を調停により選択し、リード要求REQ3として出力する。
【0039】
例えば、アービタ50は、リード要求REQ1、REQ2を重複して受信した場合、リード要求REQ1、REQ2を交互に選択してもよい(ラウンドロビン)。これにより、アービタ50による調停処理を簡易にすることができる。また、アービタ50は、リード要求REQ1、REQ2を重複して受信した場合、自ダイD2のサービスプロセッサ20から受信するリード要求REQ2の選択頻度を、前段のダイD1のアービタ50から受信するリード要求REQ1の選択頻度より低くしてもよい。これにより、各ダイDのサービスプロセッサ20からのリード要求REQの選択頻度を同程度にすることができる。すなわち、全てのダイDのリード要求REQのROM60への発行頻度を同程度にすることができる。
【0040】
アービタ50は、リード要求REQ3の応答であるアクノリッジACK3のダイD3からの受信を待つ。アクノリッジACK3は、最終段のダイDnのアービタ50によりリード要求REQが選択された場合、最終段のダイDnのアービタ50から順次転送される。
【0041】
アービタ50は、アクノリッジACK3を、調停により選択したリード要求REQに対応するアクノリッジ端子ACK(ACK1またはACK2)に出力する。そして、アービタ50は、アクノリッジACKの出力先から受信するチップセレクトCS#およびデータMOSI(リードコマンドとアドレス)をチップセレクト端子CS3#およびデータ端子MOSI3に出力する。
【0042】
例えば、アービタ50は、自ダイD2のSPIコントローラ40からのリード要求REQを調停により選択した場合、選択したリード要求REQをリード要求端子REQ3に転送する。アービタ50は、アクノリッジ端子ACK3からアクノリッジACK3を受信した場合、SPIコントローラ40にアクノリッジACK3を転送する。そして、アービタ50は、転送したアクノリッジACK3に応答してSPIコントローラ40から出力されるチップセレクトCS#およびデータMOSIをチップセレクト端子CS3#およびデータ端子MOSI3に出力する。SPIコントローラ40から出力されるチップセレクトCS#およびデータMOSIは、最終段のダイDnのアービタ50を介してROM60に出力される。
【0043】
なお、初段のダイD1および最終段のダイDnを除く他のダイD3、D4、...Dn-1は、図2と同じ構成を有する。また、初段のダイD1は、要求端子REQ1、アクノリッジ端子ACK1、チップセレクト端子CS1#およびデータ端子MOSI1が信号線に接続されず、無効に設定されることを除き、図2の構成と同じである。
【0044】
図3は、図1のダイDnの一例を示す。図2と同一または同様の要素については同じ符号を付し、詳細な説明は省略する。ダイDnのアービタ50では、リード要求端子REQ3およびアクノリッジ端子ACK3は、信号線に接続されず、無効に設定される。また、ダイDnのアービタ50は、チップセレクト端子CS3#およびデータ端子MOSI3がROM60のチップセレクト端子CS#およびデータ端子MOSIにそれぞれ接続される。ダイDnのその他の構成は、図2に示したダイD2の構成と同様である。
【0045】
ダイDnのアービタ50は、リード要求REQ1、REQ2の一方のみを受信した場合、受信したリード要求REQ(REQ1またはREQ2)に対応するアクノリッジ端子ACK(ACK1またはACK2)にアクノリッジACKを出力する。アービタ50は、リード要求REQ(REQ1、REQ2)を重複して受信した場合、受信したリード要求REQの一方を調停により選択する。アービタ50は、選択したリード要求REQ(REQ1またはREQ2)に対応するアクノリッジ端子ACK(ACK1またはACK2)にアクノリッジACKを出力する。
【0046】
そして、アービタ50は、アクノリッジACKの出力先から受信するチップセレクトCS#およびデータMOSI(リードコマンドとアドレス)をチップセレクト端子CS3#およびデータ端子MOSI3を介してROM60に出力する。また、アービタ50は、データ端子MOSI3に出力したデータMOSI(リードコマンドとアドレス)を、リード要求RREQとして全てのダイDのサービスプロセッサ20とキャッシュメモリ30とに転送する。
【0047】
ROM60は、チップセレクトCS#とともに受信するデータMOSIに含まれるリード要求RREQ(リードコマンドおよびアドレス)に基づいて読み出し動作を実行する。ROM6は、メモリセルアレイから読み出したデータDTをデータ端子MISO(Master-In Slave-Out)から出力する。ROM60のMISO端子から出力されるデータDTは、全てのダイD1-Dnのサービスプロセッサ20およびキャッシュメモリ30のMISO端子に出力される。
【0048】
ROM60に出力されたリード要求RREQの発行元のサービスプロセッサ20は、ダイDnのアービタ50から出力されるリード要求RREQに含まれるアドレスにより、発行したリード要求REQがROM60に出力されたことを検出する。同様に、ROM60に出力されたリード要求RREQと同じアドレスのリード要求REQの発行元のサービスプロセッサ20は、発行したリード要求REQがROM60に出力されたことを検出する。サービスプロセッサ20は、リード要求RREQをMISO端子で受信する。そして、発行したリード要求REQがROM60に出力されたことを検出した少なくとも1つのサービスプロセッサ20は、ROM60から出力されるデータDTを命令としてフェッチすることで、初期化プログラムを実行する。
【0049】
キャッシュミスしたキャッシュメモリ30は、キャッシュミスしたアドレスを含むリード要求RREQを検出することで、キャッシュミスしたリード要求REQがROM60に出力されたことを検出する。キャッシュメモリ30は、リード要求RREQをMISO端子で受信する。そして、キャッシュミスしたキャッシュメモリ30は、ROM60から出力されるデータDTを、キャッシュミスしたアドレスに対応して確保したデータ領域にデータを格納する。
【0050】
なお、ROM60に出力されたリード要求RREQの発行元でないサービスプロセッサ20は、ROM60から出力されるデータDTを取得しない。同様に、キャッシュミスしていないキャッシュメモリ30と、キャッシュミスしたアドレスがダイDnのアービタ50から出力されるリード要求REQと異なるキャッシュメモリ30は、ROM60から出力されるデータDTを取得しない。
【0051】
図4は、図3のダイDnのSPIコントローラ40およびアービタ50の動作の一例を示す。括弧内に示す信号は、SPIコントローラ40の信号を示す。図4では、ダイDnのSPIコントローラ40は、サービスプロセッサ20がキャッシュミスに基づいて出力したリード要求を受信し、アービタ50のリード要求端子REQ2にハイレベルのリード要求REQを出力する(図4(a))。
【0052】
アービタ50は、ダイDn-1からのリード要求REQ1を受信していない(ロウレベル"L")。このため、アービタ50は、リード要求REQ2を選択し、アクノリッジ端子ACK2を介してSPIコントローラ40にアクノリッジACK2を出力する(図4(b))。アービタ50は、ROM60からのデータDTの出力が完了するまでアクノリッジACK2をハイレベルに維持する。アクノリッジACK1は、ロウレベル"L"に維持される。
【0053】
アクノリッジACK2をアクノリッジ端子ACKで受けたSPIコントローラ40は、アービタ50のチップセレクト端子CS2#にロウレベルのチップセレクトCS#を出力する(図4(c))。SPIコントローラ40は、ROM60からのデータDTの出力が完了するまでチップセレクトCS#をロウレベルに維持する。アービタ50は、SPIコントローラ40からのチップセレクトCS#をチップセレクトCS3#としてROM60に出力する(図4(d))。
【0054】
SPIコントローラ40は、チップセレクトCS#の出力に続いて、アービタ50のデータ端子MOSI2にコマンドおよびアドレスを順次出力する(図4(e))。アービタ50は、SPIコントローラ40からのコマンドおよびアドレスを、リード要求RREQとしてデータ端子MOSI3を介してROM60のデータ端子MOSIに順次出力する(図4(f))。
【0055】
ROM60は、ロウレベルのチップセレクトCS3#を受信している間、アクティブ状態になり、コマンドおよびアドレスの受信に基づいて、読み出し動作を実行する。そして、ROM60は、アドレスに対応するデータDTをデータ線MISOから順次出力する(図4(g))。データDTは、全てのダイDのサービスプロセッサ20およびキャッシュメモリ30に転送される。そして、サービスプロセッサ20が出力したリード要求に基づいてROM60がデータDTを出力する読み出し動作が完了する。
【0056】
SPIコントローラ40は、ROM60からのデータDTの出力が完了するまでリード要求REQをハイレベルに維持する。例えば、ダイDnのサービスプロセッサ20は、リード要求REQに対応するデータDTをROM60から受信したことに基づいて、データDTの受信完了通知をSPIコントローラ40に出力する。
【0057】
SPIコントローラ40は、データDTの受信完了通知に基づいて、リード要求REQをロウレベルに設定する(図4(h))。このように、SPIコントローラ40は、リード要求が受け付けられるまで、リード要求REQを出力し続ける。また、SPIコントローラ40は、データDTの受信完了通知に基づいて、チップセレクトCS#をハイレベルに戻す(図4(i))。アービタ50は、SPIコントローラ40からのハイレベルのチップセレクトCS#をチップセレクトCS3#としてROM60に出力する(図4(j))。これにより、ROM60が非選択状態に設定される。
【0058】
例えば、アービタ50は、ROM60に出力するチップセレクトCS3#をロウレベルに設定後、ROM60からのデータDTの出力が完了した後、アクノリッジACK2をロウレベルに設定する(図4(k))。そして、アービタ50は、アクノリッジACK2をハイレベルに設定している間、他のリード要求REQの調停動作を抑止する。
【0059】
なお、ダイDnのアービタ50がダイDn-1のアービタ50からリード要求REQ1を受信したときの動作は、図4と同様である。この場合、図4のリード要求REQ2、アクノリッジACK2、チップセレクトCS2#およびデータMOSI2の波形が、リード要求REQ1、アクノリッジACK1、チップセレクトCS1#およびデータMOSI1の波形になる。
【0060】
また、ダイDn以外のアービタ50が自ダイDのSPIコントローラ40からリード要求REQを受信したときの動作は、データ端子MOSI3がROM60ではなく次段のダイDのアービタ50に転送されることを除き、図4と同様である。ダイDn以外のアービタ50が前段のダイDのアービタ50からリード要求REQ1を受信したときの動作も、図4と同様である。この場合、図4のリード要求REQ2、アクノリッジACK2、チップセレクトCS2#およびデータMOSI2の波形が、リード要求REQ1、アクノリッジACK1、チップセレクトCS1#およびデータMOSI1の波形になる。
【0061】
なお、アービタ50は、自ダイDnのSPIコントローラ40からのリード要求REQ2と前段のダイDn-1のアービタ50からのリード要求REQ1とを重複して受けた場合、例えば、先に受信したリード要求REQの処理を実施する。後で受信したリード要求REQの処理(例えば、リード要求REQの発行元へのアクノリッジACKの出力)は、先に受信したリード要求REQの処理が完了するまで待たされる。
【0062】
以上、この実施形態では、キャッシュメモリ30は、自ダイDのキャッシュミスによりROM60に発行されたリード要求REQだけでなく、他のダイDのキャッシュミスによりROM60に発行されたリード要求REQに対応するデータDTを保持できる。これにより、サービスプロセッサ20は、他のダイDのサービスプロセッサ20が発行したリード要求に対応するデータDTを命令としてフェッチすることができる。
【0063】
したがって、初期化プログラムがダイD毎にROM60から転送されることを抑制することができ、複数のダイDへの初期化プログラムの転送効率を向上することができる。例えば、計算処理用のダイDのサービスプロセッサ20は、計算処理用の他のダイDのいずれかが発行した計算処理用の初期化プログラムのリード要求に対応するデータDTを受信することができる。また、全てのダイDのサービスプロセッサ20は、他のダイDのいずれかが発行した共通の初期化プログラムのリード要求に対応するデータDTを受信することができる。
【0064】
このため、初期化プログラムをダイD毎にROM60から転送する場合に比べて、マルチダイパッケージ100全体での初期化プログラムの転送時間を短縮することができ、サービスプロセッサ20による初期化処理を早期に完了することができる。すなわち、複数種の処理のいずれかをそれぞれ実行する複数のダイDの初期化処理を早期に完了することができる。この結果、マルチダイパッケージ100の起動からコア10が処理を開始するまでの時間である立ち上がり時間を、初期化プログラムをダイD毎にROM60から転送する場合の立ち上がり時間に比べて短縮することができる。
【0065】
各ダイDにアービタ50が搭載されるため、マルチダイパッケージ100に搭載するダイDの数が変更される場合にも、複数のアービタ50を直列に接続することで、ROM60へのリード要求の調停処理を実施することができる。この結果、複数のダイDからのリード要求REQを調停するためのアービタを、マルチダイパッケージ100に搭載するダイDの数に対応して設計しなくてよい。この結果、様々な数のダイDが搭載されるマルチダイパッケージ100を迅速に市場に投入することができる。
【0066】
ダイDnのアービタ50がROM60に出力するリード要求REQは、信号線を介して全てのダイDのサービスプロセッサ20およびキャッシュメモリ30に転送される。このため、サービスプロセッサ20およびキャッシュメモリ30は、他のダイDのサービスプロセッサ20が発行したリード要求のキャッシュミス時のアドレスを認識することができる。
【0067】
そして、サービスプロセッサ20は、他のダイDのサービスプロセッサ20が発行したリード要求に応答するデータDTを命令としてフェッチすることができる。また、キャッシュメモリ30は、他のダイDのサービスプロセッサ20が発行したリード要求に応答するデータDTをデータ領域に格納することができる。このため、複数のサービスプロセッサ20から互いに同じアドレスのリード要求が出力された場合、リード要求に対応するデータDTをROM60から複数回出力することなく、複数のサービスプロセッサ20に命令をフェッチさせることができる。また、リード要求に対応するデータDTをROM60から複数回出力することなく、複数のキャッシュメモリ30にデータを格納することができる。
【0068】
サービスプロセッサ20は、キャッシュミスに基づいてSPIコントローラ40に発行したリード要求のアドレスと同じ、他のダイDからのリード要求REQに対応するデータDTを受信した場合、リード要求を取り下げる。これにより、同じアドレスのリード要求REQに対応するデータDTがROM60から複数回出力されることを抑止することができる。
【0069】
アービタ50は、2つのREQを重複して受信した場合、交互に選択することで、調停処理を簡易にすることができる。または、アービタ50は、2つのリード要求REQを重複して受信した場合、自ダイDのサービスプロセッサ20が出力するリード要求REQの選択頻度を、前段のダイDのアービタ50から受信するリード要求REQのリード要求の選択頻度より低くする。これにより、各ダイDのサービスプロセッサ20からのリード要求REQの選択頻度を同程度にすることができる。すなわち、全てのダイDのリード要求REQのROM60への発行頻度を同程度にすることができる。
【0070】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0071】
10 コア
20 サービスプロセッサ
30 キャッシュメモリ
40 SPIコントローラ
50 アービタ
100 マルチダイパッケージ
ACK アクノリッジ
CS# チップセレクト
D(D1、D2、Dn) ダイ
DT データ
MISO データ端子
MOSI データ端子
REQ リード要求
図1
図2
図3
図4