明 細 書
半導体装置、及び通信制御方法
技術分野
[0001] 機能ブロックを複数有する半導体装置に関し、特に、異なるクロック周波数で動作 する複数のコア間で通信する半導体装置及びその方法に関する。
背景技術
[0002] 従来、異なるクロック周波数で動作するコア (機能ブロック)同士の通信方法には、 主に同期方式及び非同期方式の 2種類がある。
[0003] 図 12は、同期方式を用いて通信する半導体装置を示す図である。
[0004] このような半導体装置において、コア Aとコア Bとで通信する場合、同期方式では通 信する 2つのコアの各クロックの周波数比が 1対整数倍 (例えば、 1:2, 1:3,…等)や、 1 対整数分の 1倍 (例えば、 1:1/2, 1:1/3,…等)であり、かつ 2つのクロックの位相が等し いことが条件となる。すなわち、同期通信はクロック同士が同期しているコア間でのみ 行うことが出来る通信方法である。
[0005] 図 13は、非同期方式を用いて通信する半導体装置を示す図である。
[0006] 2つのコアの各クロックの周波数比が 1対整数倍や、 1対整数分の 1倍ではなぐかつ 2つのクロックの位相が等しくないコア間で行われる通信が非同期通信である。非同 期方式を用いて通信すると、信号を出力するタイミングと信号を入力するタイミングと が非同期関係になり、信号が" 0"ど '1"との間をある時間揺らぐ状態 (この状態を meta stability:メタスタピリティという)になるので、メタスタピリティによる誤動作を防止する 為、通常、同期化回路が用いられる技術が提案されている(例えば、特許文献 1)。
[0007] 特許文献 1に記載の技術は、第 1のクロック信号に同期して所定の動作を行う第 1 のコアと、第 2のクロック信号に同期して所定の動作を行う第 2のコアとの間に同期化 回路を設けている。そして、この同期化回路は第 1のコアの出力データを第 1のクロッ ク信号に同期してラッチし、ラッチした信号を第 2のクロック信号に同期して出力して いる。
[0008] また、上記以外にもメタスタピリティによる誤動作を防止する技術が提案されて 、る (
例えば、特許文献 2)。
[0009] 特許文献 2に記載の技術は、データ入力信号とクロック入力信号の変化を検知し、 セットアップ若しくはホールドタイムを満足しない場合にフリップフロップのデータ入力 の信号を変更しないように制御して、メタスタピリティによる誤動作を防止している。 特許文献 1 :特開 2003 -273847号
特許文献 2 :特開平 6 -45880号
発明の開示
発明が解決しょうとする課題
[0010] 従来の同期方式は、各コアのクロック周波数比が 1対整数倍や 1対整数分の 1倍に 限定されるという問題がある。この制限は通信するコアの数が増加するにつれて益々 深刻になる。
[0011] さらに近年、消費電力の低減の為に、各コア毎に周波数及び電源電圧を動作時に 動的に変更する動的周波数電圧制御方式 (Dynamic Frequency Voltage Scaling: DF VS)が提案されている。コア毎に DFVSを実施する場合、電源電圧が変更されることに よりクロックの分配遅延が変化するため、コア間で同期関係が保てなくなる。すなわち 、従来の同期方式では通信できないという問題がある。また、各コアが設定できるクロ ック周波数が限定されていると、 DFVSの低電力化に対する効果が減少するという問 題がある。
[0012] 一方、上述した特許文献 1のような非同期方式には主に次に示す問題がある。
[0013] 第 1に、非決定性動作の問題がある。チップデバイスの特性ばらつきや動作環境等 に依存して、クロックサイクルのレベルでの動作が非決定的 (nondeterministic)になる 。その結果、ハードウェア/ソフトウェアの検証'デバックやテストにかかるコストが増大 してしまう。
[0014] 第 2に、通信レイテンシが大きいという問題がある。同期化に要する遅延の為に通 信レイテンシが増加し、通信スループットが低下する。その結果、性能の低下や、そ れを補償するために面積 ·電力が増カ tlしてしまう。
[0015] 第 3に、メタスタピリティによる誤動作の可能性があり、この結果、信頼性が低下する という問題がある。これは、クロック周波数の増加や低電圧化や同期化を行う箇所の
増加にともない益々悪化する。信頼性を向上するには、メタスタピリティを解消する為 の時間を十分に確保する必要があるが、その結果、同期化に要する遅延が益々増 大し、通信レイテンシが増加する。
[0016] 又、上述した特許文献 2の技術は、動作時にデータ入力信号とクロック入力信号の 変化を検知し、セットアップ若しくはホールドタイムを満足して 、る力否かを判断する 力 チップデバイスの特性ばらつきや動作環境等に依存してその判断基準が変動す るため、クロックサイクルのレベルでの動作が非決定的になるという問題がある。
[0017] そこで、本発明の目的は、上記問題点を鑑みて発明されたものであって、各コアが 設定できるクロック周波数の自由度が大きぐ動作が決定的 (deterministic)で、通信レ ィテンシが小さぐ信頼性の高い、コア間の通信ができる技術を提供することにある。
[0018] 又、本発明の目的は、半導体装置内の通信履歴力 半導体装置の性能に影響を 与える要因を解析し、次世代の半導体装置に反映させることにより、信頼性の高い半 導体装置を提供することにある。
課題を解決するための手段
[0019] 卜.記誤穎を解決するための第 1の発明は、半導体装置であって、
第 1のクロック信吾に某づいてデータを出力する第 1の信吾処¾回路 、 ある一定の周期で第 1のクロック信吾の立ち上がり又は立ち下がりと一致する第 2の クロック信吾に某づいてデータ入力する第 2の信吾処理回路と、
前記第 2のクロック信吾のセットアップ時間より前に到着するデータのみを人力する ように制御する制御
を有するこ を特徴 する。
[0020] 上記誤穎を解決するための第 2の発明は、半導体装置であって、
第 ίのクロック信 に づいてデータ 出力する第 ίの 冋路
ある一 の 1¾ で のクロック の ちト.がり ¾は ち がり の ネ目 があ る一定彼になる第 2のクロック信 に づいてデータ人力する第 2の信 処理冋路 前記第 2のクロック信 のセットアップ 間より前に到羞するデータのみ 人力する ように制御する吿糊^ ^
を有するこ を特徴 する。
[0021] 卜.記誤顆を解決するための第 3の 明は、 卜.記第 1又は第 2の 明において、前記 制御回路は、前記第 1のクロック信号に同期して複数のデータを人力された順に、あ る一定の周期に予め定められた数のデータを出力するように制御する出力制御回路 であるこ を特徴 する。
[0022] 卜.記誤顆を解決するための第 4の 明は、 卜.記第 1又は第 2の 明において、前記 制御回路は、複数のデータの中から前記セットアップ時間より前に到着するデータを 尺して入力するように制御する入力制御 であるこ を特徴 す
[0023] 卜.記誤顆を解決するための第 5の 明は、 卜.記第 1又は第 2の 明において、前記 吿糊冋 は、 tfmp,セットアップ より こ至 II羞しないデータ 力しないように tfr 首 p ίの ^^ 制御する 力制御^^であるこ 特徼 す
[0024] 卜.首 Ρ,ϋ親 解決するための第 6の 明は、 h P,第 ί は第 2の 明において、 mffP, 吿糊冋 は、 tfmp,セットアップ より こ至 II羞しないデータ 力しないように tfr 首 P 2の ^^ 制御する入力制御^^であるこ 特徼 す
[0025] 卜.首 Ρ,ϋ親 解決するための第 7の 明は、 h P,第 ί は第 2の 明において、 mffP, 制御冋路は、 tff P,セットアップ 間より前に至 II羞しないデータは、データ 一定 間 だけ;犀 ¾£させる;犀 で;犀 ¾£させたデータ 力するように制御する;犀 巽 吿咖 冋路であるこ 特徼 す
は、前記セットアップより前に到着しないデータを前記第 2のクロック信吾の 1クロック Si¾iEさせるこ を特徴 する。
[0027] 上記誤穎を解決するための第 9の発明は、上記第 1から第 8のいずれかの発明に おいて、前記データは、
前記第 1のクロックに同期して所定の動作を行う第 1の機能部から出力される、処理 要求を示す処理要求データ、若しくは処理要求データを受信したことを示す処理要 求リセットデータであるこ を特徴 する。
[0028] 上記誤穎を解決するための第 10の発明は、上記第 9の発明において、前記処理. 要求データ及び前記処理要求リセットデータは、前記第 1の機能部 、前記第 2のク
ロックに同期して所定の動作を行う第 2の機能部 の間で送^信されるデータである こ を特徴 する。
[0029] 上記誤穎を解決するための第 11の発明は、上記第 9の発明において、前記処理. 要求データ及び前記処理要求リセットデータは、前記第 1の機能部 、バス の間で 送^信されるデータであるこ を特徴 する。
[0030] 上記誤穎を解決するための第 12の発明は、上記第 1から第 11のいずれかの発明 において、前記半導体装置は、
前記データの送^信中の動作状況を履歴情報 して保持する履歴保存丰段を有 するこ を特徴 する。
[0031] 卜.首 Ρ,ϋ親 解決するための 3の 明は、 卜. P ί2の 明に: いて、 tff P,半導 は、
tfmp, 歴保 が保持する 1^†青 ¾に づいて、 : の' 亩^ の 解析する解析丰段 有するこ 特徼 する„
[0032] 卜.首 Ρ,ϋ親 解決するための第 ί4の 明は、 h P,第 ί2 は第 ί3の 明において、 tfmp, 歴保 は、 tfmp, 青 ¾ に屮,力する カ するこ
す
[0033] 卜.首 Ρ,ϋ親 解決するための 5の 明は、 卜. P ίから 4のいずれかの 明 において、前記セットアップ 間 、謝乍 に動的に ¥するこ 特徼 する„
[0034] 卜.首 Ρ,ϋ 解決するための 6の S月は、 :^¾の謝言制御 去であって 第 1のクロック信吾に某づいて送信されたデータの中、ある一定の周期で第 1のクロ ック信吾の立ち上がり又は立ち下がりと一致する第 2のクロック信吾のセットアップ時 間より前に到着するデータのみを人力するように制御するこ を特徴 する
[0035] 卜.記誤穎を解決するための第 17の発明は、半導体 置の i耐言制御方法であって 第 1のクロック信吾に某づいて送信されたデータの中、ある一定の周期で第 1のクロ ック信吾の立ち上がり又は立ち下がりとの位相差がある一定値になる第 2のクロック信 号のセットアップ時間より前に到着するデータのみを人力するように制御するこ を特
す
[0036] 上記誤穎を解決するための第 18の発明は、上記第 16又は第 17の発明において、 前記诵信制御方法は、前記第 1のクロック信号に同期して複数のデータを人力され た順に、ある一定の周期に予め定められた数のデータを出力するように制御すること を特徴 する。
[0037] 上記誤穎を解決するための第 19の発明は、上記第 16又は第 17の発明において、 前記诵信制御方法は、複数のデータの中から前記セットアップ時間より前に到着す るデータを撰択して人力するように制御するこ を特徴 す
[0038] 上記誤穎を解決するための第 20の発明は、上記第 16又は第 17の発明において、 耐言吿糊 は、 tfmp,セットアップ より こ至 II羞しないデータ 力しない に制御するこ 特徼 する„
[0039] 卜.首 Ρ,ϋ親 解決するための第 2ίの 明は、 h P,第 ί6 は第 ί7の 明において、 耐言吿糊 は、 tfmp,セットアップ より こ至 II羞しないデータ 力しない に制御するこ 特徼 する„
[0040] 卜.首 Ρ,ϋ親 解決するための第 22の 明は、 h P,第 ί6 は第 ί7の 明において、 耐言吿糊 は、 tfmp,セットアップ より こ至 II羞しないデータは、データ 一 だけ;犀 ¾£させる;犀 で;犀 ¾£させたデータ 力するように制御するこ 特徼
[0041] 卜.首 Ρ,ϋ親 解決するための 23の 明は、 卜. P 22の 明に: いて、 tff 甬信 制御 去は、 tftf^セットアップ より前に到着しな ヽデータを tftf¾i¾i£ で tftf^ 第 2のクロック信吾の 1クロック分择延させるこ を特徴 す
[0042] 上記誤穎を解決するための第 24の発明は、上記第 16から第 23のいずれかの発明 において、前記セットアップ時間を、動作時に動的に ¾ ^するこ を特徴 する請求
1直16力 請求 23のいずれ力に言 P の謝言制御 法
[0043] 本発明の半導体装置は、送信する側のクロックと受信側のクロックのエッジ間の時 間差が、ある設計時に決定する遅延設計値 Tdよりも大きい場合はデータ通信し、小 さ ヽ場合はデータ通信しな ヽ。
[0044] データを通信しない第 1の方法として、送信側がそのクロックエッジではデータを出
力しない、または受信側がそのクロックエッジではデータを入力しない方法がある。第
2の方法として、データを遅延させて受信側が受信側の次のクロックのエッジで入力 するよう〖こする。
発明の効果
[0045] 本発明によると、設計時に予め想定する範囲内で、各コアのクロック周波数を自由 に設定することが可能であり、そのクロックにより同期的に通信しているため、動作が 決定的で、通信レイテンシが小さぐ信頼性の高い、コア間通信を実現することができ る。又、これにより、非同期方式で問題となるメタスタピリティ問題を回避し、動作がサ イクルレベルで確定的で、かつ低レイテンシ、低スループットのコア間通信を実現す ることがでさる。
[0046] 更に、半導体装置内の通信履歴力も半導体装置の性能に影響を与える要因を解 祈しているので、次世代の半導体装置に反映させ、信頼性の高い半導体装置を提 供することができる。
発明を実施するための最良の形態
[0047] 本発明の実施の形態を説明する。
[0048] 本発明の半導体装置は、クロック信号 clkAに同期してデータを送信するコア Aと、あ る一定の周期でクロック信号 clkAの立ち上がり又は立ち下がりと一致するクロック信号 clkBに同期してデータ受信するコア Bと、コア Aとコア Bとの間の通信を制御する制御 部とを有する。
[0049] 制御部は、クロック信号 clkBのセットアップ時間より前に到着するデータのみをコア Bが受信できるように制御する。
[0050] 制御する方法としては、クロック信号 clkAの立ち上がりエッジとその立ち上がりのす ぐ後に立ち上がるクロック信号 clkBの立ち上がりエッジとの位相差に相当する時間が 遅延設計値 Td以下の場合には、コア Aはデータを出力しない又はコア Bは入力しな いように制御する。あるいは、クロック信号 clkAの立ち上がりエッジとその立ち上がりの すぐ後に立ち上がるクロック信号 clkBの立ち上がりエッジとの位相差に相当する時間 が Td以下の場合には、データを遅延させてコア Bが次のクロックエッジのタイミングで 入力できるように制御する。
[0051] 以下に具体的な実施例を説明する。
実施例 1
[0052] 本発明における実施例 1につ 、て説明する。
[0053] 図 1は、本発明における実施例 1の半導体装置の構成図である。
[0054] コア A及びコア Bは、所定の機能を有する回路ブロックであり、例えば CPU (Central
Processing Unit)や DSP (Digital Signal Processor)等である。各コアは、各々に入力 される各クロックに同期して所定の処理を行う。
[0055] ここで、各コアに入力されるクロック信号について説明する。
[0056] 図 2は、コア Aに入力されるクロック信号 clkA及びコア Bに入力されるクロック信号 elk
Bのタイミングチャートである。
[0057] クロック信号 clkAとクロック信号 clkBとの周波数は、任意の基準周波数を f (f >0)と した場合、クロック信号 clkA〖ま mf、クロック信号 clkB〖ま nKm,
nは整数)になるように設計される。また、クロック信号 clkAとクロック信号 clkBとの位相 関係が常に一定になるように、即ち、ある一定の周期で各クロック信号の立ち上がり 又は立ち下がりが一致するように、各コアに入力される前に位相調整回路 10で調整 される。このように調整されたクロック信号 clkAは mサイクル毎にクロック信号 clkBに対 する位相関係が一巡 (位相が一致)し、クロック信号 clkBは nサイクル毎〖こクロック信号 clkAに対する位相関係が一巡 (位相が一致)する。図 2は、例として上記 mが 8、 nが 5 である場合、すなわちクロック信号 clkAの周波数が 8f、クロック信号 clkBの周波数が 5 fである場合を示している。この場合、クロック信号 clkAは 8サイクル毎、クロック信号 cl kBは 5サイクル毎にそれぞれのクロック信号の立ち上がりが一致する。また、クロック 信号 clkAとクロック信号 clkBとの立ち上がりが一致するサイクルを 0として、それぞれ のクロックの各サイクルにつけた番号を相番号と呼ぶことにする。相番号が 0のサイク ルカゝら、クロック信号 clkAは mサイクル後、クロック信号 clkBは nサイクル後に再びそれ ぞれのクロックの立ち上がりが一致するので、相番号はそれぞれ m及び nで充分とな る。尚、位相調整回路 10は、例えば DLL (Digital Locked
Loop)回路等の遅延調整回路により実現することが出来る。たとえ、各コアの電圧が 動的に変化する場合でも、それに追従して動的に位相調整することが可能である。
[0058] 再び図 1を参照すると、コア Aは、クロック信号 clkAに同期して所定の動作を行う各 種機能部 3Aと、フリップフロップ 1と、データ出力制御回路 101とを有する。ここで、 機能部とは例えば CPUや DSP等における機能実行部に相当する。
[0059] フリップフロップ 1は、データ出力制御回路 101の制御に基づいて、信号をクロック 信号 clkAに同期して出力する。尚、本実施例では、クロック信号 clkAの立ち上がりェ ッジのタイミングで出力する場合を用いて説明する力 クロック信号 clkAの立ち下がり エッジのタイミングで出力してもよい。
[0060] データ出力制御回路 101は、コア Aからコア Bへデータを送信する場合、コア Aから コア Bへのデータ送信時間を考慮して、コア Bのフリップフロップ 2のセットアップ時間 より前に到着するデータのみを送信するように、クロック信号 clkA及びクロック信号 elk Bの周波数とクロック信号 clkAの相番号とに基づいてフリップフロップ 1を制御する。 詳細に述べると、例えば図 2のクロック信号 clkAの相番号 3の立ち上がりエッジのタイ ミングでデータを出力すると、このデータを入力するタイミングは、クロック信号 clkAの 相番号 3の立ち上がりエッジより後のクロック信号 clkBの立ち上がりエッジのタイミング である。しかしながら、クロック信号 clkBの相番号 2の立ち上がりエッジのようにクロック 信号 clkAの立ち上がりエッジから、その後に立ち上がるクロック信号 clkBの立ち上が りエッジまでの時間が短すぎると、正しいデータを入力することができない。従ってデ ータ出力制御回路 101は、クロック信号 clkAの立ち上がりエッジ力もその後に立ち上 力 ¾クロック信号 clkBの立ち上がりエッジまでの位相差に相当する時間が遅延設計 値 Td以下の場合には、クロック信号 clkAの相番号 3の立ち上がりエッジのタイミングで はデータを出力しないようにフリップフロップ 1を制御する。また、図 2のクロック信号 cl kAの相番号 0及び相番号 1のように、クロック信号 clkBの相番号 1の立ち上がりエッジ までの位相差が遅延設計値 Td以上である立ち上がりエッジが 2つある場合、どちらか 一方の立ち上がりエッジのタイミングではデータを出力しないようにフリップフロップ 1 を制御する力、若しくはコア Aの機能部 3A自身がどちらか一方のサイクルにのみフリ ップフロップ 1へデータを出力するように制御する。
[0061] コア Bはクロック信号 clkBに同期して所定の動作を行う各種機能部 3Bと、フリップフ ロップ 2と、データ入力制御回路 102とを有する。
[0062] フリップフロップ 2は、データ入力制御回路 102の制御に基づいて、信号をクロック 信号 clkBに同期して入力する。尚、本実施例では、クロック信号 clkBの立ち上がりェ ッジのタイミングで入力する場合を用いて説明する力 クロック信号 clkBの立ち下がり エッジのタイミングで入力してもよ 、ものとする。
[0063] データ入力制御回路 102は、コア Aからコア Bへデータを送信する場合、データの 到着がコア Bのフリップフロップ 2のセットアップ時間に間に合わないデータを入力し な 、ように、クロック信号 clkA及びクロック信号 clkBの周波数とクロック信号 clkBの相 番号とに基づいてフリップフロップ 2を制御する。詳細に述べると、クロック信号 clkAの ある立ち上がりエッジ力もクロック信号 clkBのある立ち上がりエッジまでの位相差が遅 延設計値 Td以下の場合には、そのサイクルではデータを入力しないようにフリップフ ロップ 2を制御する。
[0064] ここで、遅延設計値 Tdの決定方法について図 3を参照して説明する。
[0065] 遅延設計値 Tdは、フリップフロップ 1がクロック信号 clkAのある立ち上がりエッジのタ イミングでデータ送信を開始して力 コア Bが受信するまでの時間であるデータ送信 時間を考慮して設定する。詳細には、クロック信号 clkAとクロック信号 clkBとの間のク ロックスキューの時間 +クロックジッタの時間を TskewG、フリップフロップの遅延時間 を Tff、フリップフロップのセットアップ時間を Tsu、最小サイクル時間(最大周波数時の サイクル時間)を Tcyc (min)とすると、遅延設計値 Tdは、 Tcyc (min) >Td>TskewG + Tsu + Tffとなるように設定することになる。
[0066] 続いて、本実施例の動作について説明する。尚、本実施例では、 m=8、 n= 5の 場合を用いて説明する。
[0067] 図 4は、本実施例においてコア Aからコア Bにデータを送信する際にデータ出力制 御回路 101がデータの出力を制御する場合の動作を説明するためのタイムチャート である。
[0068] 図中のクロック信号 clkAはコア Aのクロック信号 clkAであり、図中のクロック信号 clkB はコア Bのクロック信号 clkBである。 m=8であるため、クロック信号 clkAの周波数は 8f であり、相番号は 0〜7までとなる。同様に n= 5であるためクロック信号 clkBの周波数 は 5fであり、相番号は 0〜5までとなる。クロック信号 clkA、クロック信号 clkBの各相番
号が 0のときに位相が一致 (各クロック信号の立ち上がりのタイミングが一致)している ので、クロック信号 clkAの 8サイクル毎、クロック信号 clkBの 5サイクル毎に位相関係が 一巡することになる。すなわち、データ出力制御回路 101は、クロック信号 clkAの 8サ イタル内及びクロック信号 clkBの 5サイクル内の位相関係を考慮してデータの通信制 御を行うことになる。 Dout_ENは、データ出力制御回路 101からの制御信号である。 D in_ENは、データ出力制御回路 102からの制御信号である。 Doutは、フリップフロップ 1が出力する入力信号である。 Dinは、フリップフロップ 2が出力し、コア Bの機能部 3B が入力する信号である。
[0069] ここで、遅延設計値 Tdとしてクロック信号 clkAのサイクル時間の半分を選択した場 合、図 4に示すように、クロック信号 clkAの相番号 3の立ち上がりエッジからクロック信 号 clkBの相番号 2の立ち上がりエッジ、及びクロック信号 clkAの相番号 6の立ち上がり エッジからクロック信号 clkBの相番号 4の立ち上がりエッジへの位相差に相当する時 間が Td以下になる。このことは、クロック信号 clkA及びクロック信号 clkBの周波数とク ロック信号 clkAの相番号と力 わ力るので、この場合、データ通信しないようにデータ 出力制御回路 101は制御することになる。
[0070] コア Aがデータを出力しないように制御する場合、データ出力制御回路 101はクロ ック信号 clkAの周波数 8f、クロック信号 clkBの周波数 5f及びクロック信号 clkAの相番 号 0〜7が与えられるので、クロック信号 clkAの相番号 3及び 6の立ち上がりエッジの タイミングで出力しないように制御する。また、クロック信号 clkAの相番号 0及び 1の立 ち上がりエッジのタイミングで出力されたデータを、クロック信号 clkBの相番号 1の立 ち上がりエッジのタイミングで入力することが出来る力 ここではクロック信号 clkAの相 番号 1の立ち上がりエッジのタイミングで出力されたデータを受け取るようにする為、 相番号 0のタイミングではデータを出力しないように出力制御回路 101が制御する場 合について説明する。
[0071] まず、データ出力制御回路 101は、クロック信号 clkAの相番号 1及び 2でデータを 出力するように、クロック信号 clkAの相番号 0の立ち上がりエッジのタイミングで制御 信号 Dout_ENを Highにする。
[0072] データ出力制御回路 101は、クロック信号 clkAの相番号 3の立ち上がりエッジのタイ
ミングでフリップフロップ 1がデータを出力しないように、クロック信号 clkAの相番号 2 の立ち上がりエッジのタイミング力 ホールド時間経った後、制御信号 Dout_ENを Lo
Wにする 0
[0073] クロック信号 clkAの相番号 4の立ち上がりエッジのタイミングでフリップフロップ 1がデ ータを出力できるように、クロック信号 clkAの相番号 3の立ち上がりエッジのタイミング からホールド時間経った後、制御信号 Dout_ENを Highにする。
[0074] データ出力制御回路 101は、クロック信号 clkAの相番号 6の立ち上がりエッジのタイ ミングでフリップフロップ 1がデータを出力しないように、クロック信号 clkAの相番号 5 の立ち上がりエッジのタイミング力 ホールド時間経った後、制御信号 Dout_ENを Lo
Wにする 0
[0075] クロック信号 clkAの相番号 7の立ち上がりエッジのタイミングでフリップフロップ 1がデ ータを出力できるように、クロック信号 clkAの相番号 6の立ち上がりエッジのタイミング からホールド時間経った後、制御信号 Dout_ENを Highにする。
[0076] 次に、クロック信号 clkAの相番号 0の立ち上がりエッジのタイミングでフリップフロッ プ 1がデータを出力しないように、クロック信号 clkAの相番号 7の立ち上がりエッジの タイミングで制御信号 Dout_ENを Lowにする。
[0077] 以上の動作を繰り返すことにより、非同期方式で問題となるメタスタピリティ問題を回 避し、動作がサイクルレベルで確定的で、かつ低レイテンシ、低スループットのコア間 通信を実現することができる。
[0078] 位相差に相当する時間が Td以下の場合に、データを通信しないように制御する方 法として、上述したコア Aがそのタイミングではデータを出力しないようにデータ出力 制御回路 101がフリップフロップ 1を制御する方法と、コア Bがそのタイミングではデー タを入力しないようにデータ入力制御回路 102がフリップフロップ 2を制御する方法が ある。
[0079] 次に、データ入力制御回路 102がフリップフロップ 2を制御する方法について説明 する。
[0080] 図 5は、本実施例においてコア Aからコア Bにデータを送信する際にデータ入力制 御回路 102がデータの入力を制御する場合の動作を説明するためのタイムチャート
である。
[0081] コア Bがデータを入力しないように制御する場合、上述した通り、クロック信号 clkAの 相番号 3及び 6の立ち上がりエッジのタイミングで出力されたデータを入力しないよう に制御する。また、クロック信号 clkAの相番号 0及び 1の立ち上がりエッジのタイミング で出力されたデータを、クロック信号 clkBの相番号 1の立ち上がりエッジのタイミング で入力することが出来る力 ここではコア Aの機能部 3Aがクロック信号 clkAの相番号 0か 1のどちらか一方の立ち上がりエッジのタイミングでしかデータを出力しない場合 について説明する。同様に、クロック信号 clkAの相番号 2、 3及び 4についても、コア A の機能部 3Aが相番号 2, 3, 4のいずれか 1つの立ち上がりエッジのタイミングでしか データを出力しないとする。更に、同様に、クロック信号 clkAの相番号 5、 6及び 7につ いても、コア Aの機能部 3Aが相番号 5, 6, 7のいずれ力 1つの立ち上がりエッジのタ イミングでしかデータを出力しないとする。
[0082] まず、データ入力制御回路 102は、クロック信号 clkAの相番号 3の立ち上がりエッジ のタイミングでフリップフロップ 1が出力したデータを、クロック信号 clkBの相番号 2の 立ち上がりエッジのタイミングでフリップフロップ 2が入力しないように、クロック信号 elk Bの相番号 1の立ち上がりエッジのタイミングで制御信号 Din_ENを Lowにする。
[0083] クロック信号 clkAの相番号 4の立ち上がりエッジのタイミングでフリップフロップ 1が出 力したデータを、クロック信号 clkBの相番号 3の立ち上がりエッジのタイミングでフリツ プフロップ 2が入力できるように、クロック信号 clkBの相番号 2の立ち上がりエッジのタ イミングで制御信号 Din_ENを Highにする。
[0084] データ入力制御回路 102は、クロック信号 clkAの相番号 6の立ち上がりエッジのタイ ミングでフリップフロップ 1が出力したデータを、クロック信号 clkBの相番号 4の立ち上 力 Sりエッジのタイミングでフリップフロップ 2が入力しな 、ように、クロック信号 clkBの相 番号 3の立ち上がりエッジのタイミングで制御信号 Din_ENを Lowにする。
[0085] クロック信号 clkAの相番号 7の立ち上がりエッジのタイミングでフリップフロップ 1が出 力したデータを、クロック信号 clkBの相番号 0の立ち上がりエッジのタイミングでフリツ プフロップ 2が入力できるように、クロック信号 clkBの相番号 4の立ち上がりエッジのタ イミングで制御信号 Din_ENを Highにする。また、クロック信号 clkAの相番号 1の立ち
上がりエッジのタイミングでフリップフロップ 1が出力したデータは、制御信号 Din_EN が Highのままであるため、クロック信号 clkBの相番号 1の立ち上がりエッジのタイミン
[0086] 以上の動作を繰り返すことにより、非同期方式で問題となるメタスタピリティ問題を回 避し、動作がサイクルレベルで確定的で、かつ低レイテンシ、低スループットのコア間 通信を実現することができる。
[0087] 尚、本実施例ではデータ出力制御回路 101とデータ入力制御回路 102とを有する 半導体装置を構成例に挙げて説明したが、これに限るものではない。即ち、どちらか 一方を有した構成であればよい。また、本実施例では、コア Aからコア Bにデータを送 信する場合について説明したため、コア Aがデータ出力制御回路 101を、コア Bがデ ータ入力制御回路 102を有する構成であった力 コア B力もコア Aにデータを送信す る場合は、コア Aがデータ入力制御回路 102を、コア Bがデータ出力制御回路 101を 有する構成となる。又、コア A及びコア Bにデータ出力制御回路 101又はデータ入力 制御回路 102を有する構成をとり、コア Aとコア Bとでデータ送受信する構成であって も良い。
実施例 2
[0088] 実施例 1において、位相差に相当する時間が遅延設計値 Td以下の場合にデータ を通信しな 、方法として、そのタイミングではデータを出力しな 、又は入力しな!ヽ方 法について説明した力 データを遅延させてコア Bが次のクロックエッジのタイミング で入力できるようにしてもよい。本実施例では、データを遅延させる方法について説 明する。尚、上述した実施例と同様の構成については、同一番号を付し、詳細な説 明を省略する。
[0089] 図 6は、本実施例の半導体装置の構成を示す図である。
[0090] フリップフロップ 1は、信号をクロック信号 clkAに同期して出力する。尚、本実施例で は、クロック信号 clkAの立ち上がりエッジのタイミングで出力する場合を用いて説明す る力 クロック信号 clkAの立ち下がりエッジのタイミングで出力してもよいものとする。
[0091] フリップフロップ 2は、信号をクロック信号 clkBに同期して入力する。尚、本実施例で は、クロック信号 clkBの立ち上がりエッジのタイミングで入力する場合を用いて説明す
るが、クロック信号 clkBの立ち下がりエッジのタイミングで入力してもよ!、ものとする。
[0092] 遅延素子 30は、フリップフロップ 1から出力されたデータを遅延値 Tdly時間だけ遅 延させる。
[0093] ここで、遅延値 Tdlyの決定方法について図 3を参照して説明する。
[0094] 遅延値 Tdlyは、遅延設計値 Td同様、コア Aがクロック信号 clkAのある立ち上がりェ ッジでデータ送信開始して力 コア Bが受信するまでの時間であるデータ送信時間を 考慮して設定する。
最小サイクル時間 (最大周波数時のサイクル時間)を Tcyc(min)、クロック信号 clkAとク ロック信号 clkBとの間のクロックスキュー +クロックジッタを TskewG、クロック信号 clkA内 またはクロック信号 clkB内のクロックスキュー +クロックジッタを TskewL、クロック信号 elk Aとクロック信号 clkBの位相差を Tpd、フリップフロップの遅延を Tff、フリップフロップの セットアップ時間を Tsu、フリップフロップのホールド時間を Thoとすると、 Tdlyは Tskew G + Tsu + Tho < Tdlyく Tcyc(min) - TskewL - Tsu - Tffとなるように設定する。
[0095] データ遅延選択制御回路 103は、クロック信号 clkAの周波数、クロック信号 clkBの 周波数及びクロック信号 clkBの相番号に基づいて、コア Aからの出力データである D outまたは、その出力を遅延素子 30が遅延値 Tdly時間だけ遅延させた Dout_DLYの いずれ力からのデータをフリップフロップ 2が入力するかセレクタ 4を制御する。
[0096] セレクタ 4は、データ遅延選択制御回路 103からの制御信号 Dselに基づいて、 Dout または Dout_DLYの出力値を選択する。
[0097] 続いて、本実施例における動作について説明する。
[0098] 図 7は、データ遅延選択制御回路 103の動作を説明するためのタイミングチャート である。尚、本実施例では、基準周波数を fとして、クロック信号 clkAの周波数が 8f、ク ロック信号 clkBの周波数力 5fとした場合の動作を説明する。
[0099] 図中のクロック信号 clkA〖まコ Aのクロック信号 clkAであり、図中のクロック信号 clkB はコア Bのクロック信号 clkBである。 m=8であるため、クロック信号 clkAの周波数は 8f であり、相番号は 0〜7までとなる。同様に n= 5であるためクロック信号 clkBの周波数 は 5fであり、相番号は 0〜4までとなる。クロック信号 clkA、クロック信号 clkBの各相番 号が 0のときに位相が一致 (各クロック信号の立ち上がりのタイミングが一致)している
ので、クロック信号 clkAの 8サイクル毎、クロック信号 clkBの 5サイクル毎に位相関係が 一巡することになる。すなわち、データ遅延選択制御回路 103は、クロック信号 clkA の 8サイクル内及びクロック信号 clkBの 5サイクル内の位相関係を考慮してデータの 通信制御を行うことになる。 Doutは、フリップフロップ 1からの出力データであり、遅延 させていないデータである。 Dout_DLYは、フリップフロップからの出力データを遅延 素子で遅延させたデータである。 Dselは、データ遅延選択制御回路 103からの制御 信号である。 Dinは、フリップフロップ 2が出力するデータである。
[0100] 図 7に示すように、クロック信号 clkAの相番号 3の立ち上がりエッジからクロック信号 c lkBの相番号 2の立ち上がりエッジ、及びクロック信号 clkAの相番号 6の立ち上がりェ ッジからクロック信号 clkBの相番号 4の立ち上がりエッジへの位相差が Td以下となる。 このことは、クロック信号 clkA及びクロック信号 clkBの周波数とクロック信号 clkBのネ目番 号とからわかるので、このときデータ遅延選択制御回路 103は、 clkAの相番号 3及び 相番号 6の立ち上がりエッジのタイミングでフリップフロップ 1が出力するデータを遅延 素子により Tdlyだけ遅延されたデータをフリップフロップ 2が入力するデータとして選 択する。すなわち、クロック信号 clkAの相番号 3の立ち上がりエッジ力もクロック信号 cl kBの相番号 2の立ち上がりエッジ、及びクロック信号 clkAの相番号 6の立ち上がりエツ ジ力 クロック信号 clkBの相番号 4の立ち上がりエッジでデータを送受信する代わりに 、遅延素子 30で Tdlyだけ遅延させたデータをフリップフロップ 2が入力するようにセレ クタ 4を制御することにより、クロック信号 clkAの相番号 3の立ち上がりエッジ力 クロッ ク信号 clkBの相番号 3の立ち上がりエッジ、及びクロック信号 clkAの相番号 6のクロッ クエッジ力もクロック信号 clkBの相番号 0の立ち上がりエッジのタイミングで入力するよ うに制御する。
[0101] まず、クロック信号 clkAの相番号 0又は 1の立ち上がりエッジのタイミングでフリップ フロップ 1が出力したデータを、クロック信号 clkBの相番号 1の立ち上がりエッジのタイ ミングでフリップフロップ 2が Dout力も受信するように、データ遅延選択制御回路 103 はクロック信号 clkBの相番号 1の立ち上がりエッジのタイミングでは、 Dselに Lowを出 力する。
[0102] データ遅延選択制御回路 103は、クロック信号 clkAの相番号 3の立ち上がりエッジ
のタイミングでフリップフロップ 1が出力したデータを Dout_DLYから受信するように、ク ロック信号 clkBの相番号 1の立ち上がりエッジのタイミングで、制御信号 Doutを High にする。
[0103] クロック信号 clkAの相番号 4の立ち上がりエッジのタイミングでフリップフロップ 1が出 力したデータを Dout力も入力するように、クロック信号 clkBの相番号 2の立ち上がりェ ッジのタイミングで、制御信号 Dselを Lowにする。
[0104] クロック信号 clkAの相番号 6の立ち上がりエッジのタイミングでフリップフロップ 1が出 力したデータを、 Dout_DLYから入力するように、クロック信号 clkBの相番号 3の立ち 上がりエッジのタイミングで、制御信号 Dselを Highにする。
[0105] クロック信号 clkAの相番号 7の立ち上がりエッジのタイミングでフリップフロップ 1が出 力したデータを、 Dout力も入力するように、クロック信号 clkBの相番号 4の立ち上がり エッジのタイミングで、制御信号 Dselを Lowにする。
[0106] 以上により、非同期方式で問題となるメタスタピリティ問題を回避し、動作がサイクル レベルで確定的で、かつ低レイテンシ、低スループットのコア間通信を実現すること ができる。
実施例 3
[0107] 本実施例では、上述した半導体装置を使用したノ、ンドシェイク回路について説明 する。尚、上述した構成と同様の構成については同一番号を付し、詳細な説明を省 略する。また、本実施例では上述した実施例 2を用いた場合について説明するが、 実施例 1で説明した半導体装置を用いてもょ 、。
[0108] 図 8は、上述した実施例 2の半導体装置を用いたリクエストのハンドシェイク回路を 示す図である。尚、リクエストとはデータ通信やデータ処理などにおける処理要求の データのことである。
[0109] ハンドシェイク回路 80は、データ遅延選択制御回路 103A、データ遅延選択制御 回路 103B、データ遅延選択回路 20A、データ遅延選択回路 20B、データ遅延素子 30及び同期式 SRフリップフロップ 81を有す。また、コア Aとコア Bとの電源電圧の差 を変換するレベルシフタ回路 82を有す。
[0110] コア Aの機能部 3Aは、ハンドシェイク回路 80を通じて、リクエストがある旨をコア Bに
通知し、コア Bはリクエストを受け取った旨をコア Aに通知する。リクエストの有無は、コ ァ A及びコア Bで共有する同期式 SRフリップフロップ 81に保持され、それぞれのコア が備えるデータ遅延選択回路 20A及び 20Bを通じて同期的にハンドシェイク処理が 行われる。
[0111] 続いて、ハンドシェイクの動作について説明する。
[0112] まず、リクエストをセットする動作について説明する。
[0113] コア Aの機能部 3Aは Req_setの信号を Highにすることで、同期式 SRフリップフロッ プ 81にリクエストをセットする(ステップ BS301)。
[0114] リクエストがセットされた旨は、同期式 SRフリップフロップ 81の出力 Doutからの信号 が Highとなって出力される(ステップ BS302)。
[0115] このリクエストがセットされた旨を示す Doutの値 Highは、コア B側にあるデータ遅延 選択回路 20Bを通じて Req_Bに出力され、コア Bにリクエストがある旨が通知される(ス テツプ BS 303)。
[0116] ここで、ステップ BS303について詳細に説明する。
[0117] データ遅延選択制御回路 103Bは、 Doutの値が Highになった時、図 7のクロック信 号 clkBの相番号 0, 1, 3のように、この直前のクロック信号 clkAの立ち上がりエッジか らクロック信号 clkBの立ち上がりまで Td以上ある場合は、 Doutからの信号を入力する ように制御する。フリップフロップ 2は、 Doutからの信号をクロック信号 clkBの立ち上が りエッジのタイミングで入力し、 Req_Bに出力する。
[0118] 図 7のクロック信号 clkBの相番号 2,4のように、直前のクロック信号 clkAの立ち上がり 力もクロック信号 clkBの立ち上がりまでが Td以下である場合は、 Doutを遅延素子 30 により Tdlyだけ遅延させた Dout_DLYからの信号を、入力するように制御する。フリップ フロップ 2はクロック信号 clkBの立ち上がりエッジのタイミングで入力し、 Req_Bに出力 する。
[0119] また、図 7のクロック信号 clkBの相番号 0のように、クロック信号 clkAの立ち上がりとク ロック信号 clkBの立ち上がりが等しい場合には、 Doutをフリップフロップ 2に入力せず に、直接 Req_Bに出力するように制御する。
[0120] 尚、データ遅延選択制御回路 103Bは、クロック信号 clkAの周波数、クロック信号 cl
kBの周波数、クロック信号 clkBの相番号、及び遅延設計値 Tdを参照して、上記のよう に制御する。これにより、メタスタピリティを回避し、かつ確定的にコア Aからのリクエス トをコア Bに通知する。
[0121] 上述のステップ BS301及び BS302で説明した、リクエストがセットされた旨を示す D outの値 Highは、データ遅延選択回路 20Aを通じて Req_Aに出力され、同期式 SRフ リップフロップ 81にリクエストがセットされている旨がコア Aに通知される(ステップ AS3 03)。コア Aは以前のリクエストがセットされている間は、新たなリクエストをセットするこ とはできない。
[0122] ここで、ステップ AS303について詳細に説明する。
[0123] データ遅延選択制御回路 103Aは、 Doutの値が Highになった時、この直前のクロ ック信号 clkBの立ち上がりエッジからクロック信号 clkAの立ち上がりまで Td以上ある場 合は、 Doutからの信号を入力するように制御する。フリップフロップ 1は、 Doutからの 信号をクロック信号 clkAの立ち上がりエッジのタイミングで入力し、 Req_Aに出力する。
[0124] 直前のクロック信号 clkBの立ち上がりからクロック信号 clkAの立ち上がりまでが Td以 下である場合は、 Doutを遅延素子 30により Tdlyだけ遅延させた Dout_DLYからの信 号を、入力するように制御する。フリップフロップ 1はクロック信号 clkAの立ち上がりェ ッジのタイミングで入力し、 Req_Aに出力する。
[0125] クロック信号 clkBの立ち上がりとクロック信号 clkAの立ち上がりとが等しい場合には、 Doutをフリップフロップ 1に入力せずに、直接 Req_Aに出力するように制御する。
[0126] 尚、データ遅延選択制御回路 103Aは、クロック信号 clkAの周波数、クロック信号 cl kBの周波数、クロック信号 clkAの相番号、及び遅延設計値 Tdを参照して、上記ように 制御する。
[0127] 続、てセットされたリクエストをリセットする動作にっ 、て説明する。
[0128] コア Bは、リクエストを受信すると、もしくはリクエストの対象となって!/、る処置が完了 すると、クロック信号 clkBの立ち上がりエッジのタイミングで Req_resetを Highにするこ とでクロック信号 clkBの立ち上がりエッジのタイミングで、同期式 SRフリップフロップ 81 に保持されているリクエストをリセットする (ステップ AR301)。このリクエストがリセット された旨は、同期式 SRフリップフロップ 81の出力 Doutからの信号が Lowとなって出
力される(ステップ AR302)。
[0129] このリクエストがセットされた旨を示す Doutの値 Lowは、コア A側にあるデータ遅延 選択回路 20Aを通じて Req_Aに出力され、コア Aにリクエストがある旨が通知される ( ステップ AR303)。
[0130] ここで、ステップ AR303について詳細に説明する。
[0131] データ遅延選択制御回路 103Aは、 Doutの値力Lowになった時、この直前のクロッ ク信号 clkBの立ち上がりエッジ力もクロック信号 clkAの立ち上がりまで Td以上ある場 合は、 Doutからの信号を入力するように制御する。フリップフロップ 1は、 Doutからの 信号をクロック信号 clkAの立ち上がりエッジのタイミングで入力し、 Req_Aに出力する。
[0132] 直前のクロック信号 clkBの立ち上がりからクロック信号 clkAの立ち上がりまでが Td以 下である場合は、 Doutを遅延素子 30により Tdlyだけ遅延させた Dout_DLYからの信 号を、入力するように制御する。フリップフロップ 1はクロック信号 clkAの立ち上がりェ ッジのタイミングで入力し、 Req_Aに出力する。
[0133] クロック信号 clkAの立ち上がりとクロック信号 clkBの立ち上がりが等しい場合には、 D outをフリップフロップ 1に入力せずに、直接 Req_Aに出力するように制御する。
[0134] 尚、データ遅延選択制御回路 103Aは、クロック信号 clkAの周波数、クロック信号 cl kBの周波数、クロック信号 clkAの相番号、及び遅延設計値 Tdlyを参照して、上記よう に制御する。その結果、コア Aにリクエストがリセットされた旨を通知する。コア Aは新た なリクエストをセットすることができる。
[0135] 上述のステップ AR301及び AR302で説明した、リクエストがリセットされた旨は、コ ァ B側のデータ遅延選択回路 20Bを通じて Doutの値が Req_Bに出力され、同期式 SR フリップフロップ 81にリクエストがリセットされた旨がコア Bに通知される(ステップ BR3 03)。コア Aは以前のリクエストがセットされている間は、新たなリクエストをセットするこ とはできない。
[0136] ここで、ステップ BR303について詳細に説明する。
[0137] データ遅延選択制御回路 103Bは、 Doutの値力 owになった時、この直前のクロッ ク信号 clkAの立ち上がりエッジ力もクロック信号 clkBの立ち上がりまで Td以上ある場 合は、 Doutからの信号を入力するように制御する。フリップフロップ 2は、 Doutからの
信号をクロック信号 clkBの立ち上がりエッジのタイミングで入力し、 Req_Bに出力する。
[0138] 直前のクロック信号 clkAの立ち上がりからクロック信号 clkBの立ち上がりまでが Td以 下である場合は、 Doutを遅延素子 30により Tdlyだけ遅延させた Dout_DLYからの信 号を、入力するように制御する。フリップフロップ 2はクロック信号 clkBの立ち上がりェ ッジのタイミングで入力し、 Req_Bに出力する。
[0139] クロック信号 clkBの立ち上がりとクロック信号 clkAの立ち上がりとが等しい場合には、
Doutをフリップフロップ 1に入力せずに、直接 Req_Bに出力するように制御する。
[0140] 尚、データ遅延選択制御回路 103Bは、クロック信号 clkAの周波数、クロック信号 cl kBの周波数、クロック信号 clkBの相番号、及び遅延設計値 Tdlyを参照して、上記のよ うに制御する。
[0141] 上述したように、本発明のハンドシェイク回路によれば、コア間で同期的にリクエスト の送受信が行えるため、非同期方式で問題となるメタスタピリティを回避し、動作がサ イクルレベルで確定的でかつ低レイテンシ、低スループットのコア間通信を実現する ことが出来る。
実施例 4
[0142] 本実施例では、上述したハンドシェイク回路を有するバス'インターフェース回路を 備える SOC (System on a Chip)について説明する。
[0143] 図 9は本発明における SOCの構成例である。
[0144] SOCを構成する各コアのクロックはすべて、バスのクロックにあわせて位相を調整し 、コア間の通信は必ずバスを介して行われる。これにより各コアの周波数範囲に差が ある場合でも、コア間が直接通信する方法に比べて、少ない周波数のステップ数で 任意のコア間の通信を実現することができる。また、クロック周波数及び電源電圧を 変更する場合でも、位相調整回路 10により動的にクロック間の位相を一定に調整す るので、同期通信が可能であり、すなわち非同期方式で問題となるメタスタピリティ問 題を回避し、動作がサイクルレベルで確定的で、かつ低レイテンシ、低スループット のコア間通信を実現することができる。
[0145] 図 10は、バス'インターフェース回路の構成例である。
[0146] バス'インターフェース回路は、リクエスト FIFO(requestFIFO)2101、データ FIFO(da
ta FIFO)2102、データ遅延選択制御回路 103A、及びデータ遅延選択制御回路 10 3Bを備える。
[0147] リクエスト FIFO2101は複数のハンドシェイク回路 80を備え、コア (Master Core)211 0から MReqに入力されるリクエストを、バス (Bus
Interconnect)2120に Reqを通じて同期的に通知する。また、そのリクエストに対応す る命令 (Cmd)、アドレス (Addr)、及びデータ (Data)をデータ FIFOよりバス 2120に出力 する。尚、ここでのコア (Master
Core)2110は、バスに対してリクエストを発行するコア全般を示す。
[0148] 続いて、動作について説明する。
[0149] コアはバスに対するリクエストを、 MReqを通じて入力する。同時にそのリクエストの命 令/アドレス/データを MCmd/MAddr/MDataを通じて入力する。ノ ス 'インターフエ一 ス回路は、リクエスト FIFOに空きあれば (リクエストがセットされていないハンドシェイク 回路があれば)、リクエスト FIFO内の空!ヽて 、るハンドシェイク回路の 、ずれかにその リクエストをセットする。同時に、入力された命令/アドレス/データをデータ FIFOに格 納する。また、リクエストを受理した旨を SAckを通じてコアに通知する。一方、リクエス ト FIFOに空きがなぐリクエストを受理できない場合は、その旨を SAckを通じてコアに 通知する。
[0150] リクエスト FIFOのハンドシェイク回路にセットされたリクエストは、ハンドシェイク回路 の機能により同期的に Reqを通じてノ スに出力される。同時にそのリクエストに対応す る命令/アドレス/データがデータ FIFOから取り出されて、 Cmd/Addr/Dataを通じてバ スに出力される。
[0151] ノ スは、リクエストを受理した場合は、その旨を Ackを通じてバス'インターフェース 回路に通知する。バス'インターフェース回路は受理されたリクエストがセットされてい たハンドシェイク回路において,そのリクエストをリセットする。一方、ノ スがリクエストを 受理できない場合は、その旨を Ackを通じてバス'インターフェース回路に通知する。 バス'インターフェース回路はリクエストが受理されるまで、バスへのリクエストの出力 を継続する。
[0152] 上述したように、本発明のバス'インターフェース回路によりコアとバスとの間で同期
的にリクエストの送受信が行えるため、非同期方式で問題となるメタスタピリティ問題 を回避し、動作がサイクルレベルで確定的で、かつ、低レイテンシ、低スループットの コア間通信を実現することができる。
実施例 5
[0153] 本実施例では、上述したコア間の通信、コアとバスとの間の通信における各部の動 作状況を保持する構成について説明する。尚、上述した構成と同様の構成について は同一番号を付し、詳細な説明を省略する。
[0154] 図 11は、本発明におけるオンチップ ·デバッグ回路の構成例である。
[0155] コア 110は、 CLK生成部 111からのクロックに同期して動作する。又、他のコアとの データ通信を、ハンドシェイク回路 80及びバスを介して行う。尚、コア 110は、上述し たコア(Master Core)と同等である。
[0156] CLK生成部 111は、ある一定の周期でバスのクロック信号の立ち上がり又は立ち 下がりと一致するクロック信号を生成する。
[0157] 履歴保存部 112は、実際にデータを出入力(送受信)しているコア及びバスの動作 状況を履歴情報として保存するものである。例えば、履歴保存部 112は、コア及びバ スのクロック周波数と、コア及びバスの電源電圧とが変化したタイミングと変化後の値 と、コアのクロックの立ち上がりとバスのクロックの立ち上がり又はコアのクロックの立ち 下がりとバスのクロックの立ち下がりが一緒になるタイミングとを履歴情報として保存す る。更に、 LSB (Least Significant Bit/Byte)等のバスのデータの一部や req信号、 ack 信号の送受信タイミングも履歴情報として保存する。尚、履歴保存は、バスのクロック の立ち上がりまたは立ち下がりエッジのタイミングで保存する構成であっても、若しく はコアのクロックの立ち上がりまたは立ち下がりエッジのタイミングで保存する構成で あっても良い。
[0158] 解析部 113は、履歴保存部 112が保持する履歴情報に基づいて半導体装置の性 能低下の原因を解析し、コア周波数、コア電源電圧、バス周波数等を制御する。例え ば、履歴保存部 112が保持する履歴情報から req信号、 ack信号の送受信タイミング を解析し、 ack信号の送信が遅い場合はバスの周波数を上げ、 req信号の送信が遅い 場合はコアの周波数を上げる制御をする。
[0159] 出力部 114は、履歴保存部 112の履歴情報を外部に出力する。外部に出力された 履歴情報は、デバッグ SZW (ソフトウェア)でシミュレートさせ、半導体装置の性能低 下の原因を解明する。尚、この出力部は、履歴情報が所定量蓄積させてから所定量 毎に送信する構成であっても、予め定められた時間に送信する構成であっても、外 部から要求された際に送信する構成であっても良い。
[0160] 続いて、本実施例における動作について説明する。
[0161] コア 110は、他のコアとのデータ通信を、ハンドシェイク回路 80及びバスを介して行
[0162] その一方で、履歴保存部 112は各種情報を収集して履歴情報を保存する。
[0163] 解析部 113は、履歴情報に基づいて各種解析を行い、コア周波数、コア電源電圧
、バス周波数等を制御する。
[0164] 履歴保存部 112は、履歴情報を外部に出力する。
[0165] 上述した構成をとると、バスの動作状況を履歴情報として保存し、その履歴情報に 基づいてコアの周波数等を制御しているので、半導体装置全体の性能向上が可能と なる。又、実動作しているコア及びバスの動作状況を履歴保存して外部に出力して いるので、次世代の半導体装置に反映させることが可能となる。
実施例 6
[0166] 実施例 2において、コア A力 コア Bへの诵信を行なう際に、コア Aとコア Bのそれぞ れのクロックの位相差が择延設計彼 Td以下の場合にデータを诵信しない方法 して 、位相差が Td以下の場合には、データを遅延値 Tdlvだけ遅延させたデータをコア B が入力する 去を説明した
[0167] 実施例 2の構成を説明する図 6を参照すると、コア Bがデータを Tdlvだけ遅延させる ;犀 ¾£素早 30 備 る構成であるが、;犀 ¾£素早 30はコア Aが備 てもよい„また、デ 一タ 揮 ¾£させる 法 して、;犀 ¾£素早 30 使用する代わりに、クロックの 下りでデ ータ ラッチするフリップフロップ 使用するこ で る„
[0168] 闵 14は、コア A側でクロックの立下りでデータをラッチするフリップフロップによって データ 揮 ¾£させる 法による半 ^置の構成 示す阅であ 阅 6の ¾施例 2の 5^ の まについては、 一 付し、 ¾ 田な首 月 省 す
[0169] 図 14を参照するとコア Aは、フリップフロップ 1の出力信吾 Doutをクロック clkAの立 下りでラッチするフリップフロップ 230を備える。すなわち、フリップフロップ 230は信 吾 Doutをクロック clkAのサイクル時間の半分だけ遅延させ、 Dout DLYとして出力する 機能を有する これは遅延値 Tdlv力 Sクロック clkAのサイクル時間の半分と等 ヽ場合 の遅延素子 30と同様の機能であるので、本実施例の動作は図 7に示した実施例 2の 場合 固様にな 本実施例の構成は実施例 2の構成 比較して、择延彼 Tdlvはクロ ック clkAのサイクル時間の半分に限定される力 遅延素子の遅延値のばらつきには 影響されない いう刺点がある
実施例 7
[0170] コア Aからコア Bへの诵信を行なう際に、コア A コア Bのそれぞれのクロックの位相 差が;犀 ¾£設訃彼丁(1以下の場合には、データ 犀 ¾£彼 Tdlvだけ;犀 ¾£させたデータ コア Bが人力する 去の の ¾ 列 ^ Π 5 照して , S月す 尚、 术した ¾施 例 同 ¾の構成については、同一番号を付し詳細な説明を省略する
[0171] 闵15は、本実窗列の半導体 置の構成を示す^!であ
[0172] コア Aが備えるィネーブル付きフリップフロップ 231及び 232は、機能部 3Aが出力 する信吾 DoutOをクロック clkAに同期してラッチしそれぞれ信吾 Doutl、 Dout2として コア Bへ出力す ただし信吾をラッチして出力するのはそれぞれのイネ一ブル信 号 enl、 en2により謝乍を指示された場合のみでぁ データ出力選択制御回路 202 は、クロック clkAの相番吾を参照して、フリップフロップ 231及び 232が 1サイクル毎に 交互に動作するようにィネーブル信号 enl ¾び en2を牛.成する すなわち信号 Doutl 及び Dout2には、それぞれお互いにクロック clkAで 1サイクル遅延させた信吾が出力 されることになる 詳細には、 Doutlが出力する信吾よりも 1サイクル遅い信吾が Dout2 に屮,力され、 Dmit2が屮,力する よりも 1サイクル;犀 W言 が Dmitlに屮,力される„ よって、本 ¾施例では;犀 ¾£彼 Tdlvは常にクロック dkAのサイクル時間 等しくなる„
[0173] 一方、コア B側の構成は、 ¾施例 6におけるコア Bの構成のデータ;犀 巽択制御冋 路 103 データ人力;巽択制御冋路 20ίに置 ¾ た以外は、 ¾施例 6におけるコア Βの 5^ の であ データ人力;巽 制御冋 20ίの はデータ跑正;巽 丰尺吿 I刚冋 103の 亩 であるが、 ¾施例 6 び ¾施例 2では Dmitに し
て常に信吾 Dout DLYに遅延した信吾が出力されるのに対して、本実施例の構成で は信吾 Doutlまたは Dout2に交互に遅延した信吾が出力されるので、それに対応した 制御がなされる。
[0174] 次に、闵16を参照して本実窗列の動作の詳細を説明す
[0175] 図 16は、本実施例の動作を説明するためのタイミングチャートである 尚、本実施 例では、某準周波数を して、クロック信吾 clkAの周波数が 8f、クロック信吾 clkBの周 波数が 5f した場合の動作を説明す
[0176] 図中のクロック信 ~§ lkA〖まコ Aのクロック信 clkAであり、図中のクロック信 clkB はコア Bのクロック信吾 clkBである m= 8であるため、クロック信吾 clkAの周波数は 8f
は 5fであり、相番 は 0〜4まで な クロック信 ^dkA、クロック信 ^ lkBの各相番 号が 0の きに位相が一致 (各クロック信号の立ち十.がりのタイミングが一致)している ので、クロック信号 clkAの 8サイクル毎、クロック信号 clkBの 5サイクル毎に位相閣係が 一《するこ Wこなる„すなわち、データ出力;巽択制御冋 202及びデータ人力;巽丰尺 制御回路 201は、クロック信号 clkAの 8サイクル内及びクロック信号 clkBの 5サイクル の位ネ目閗係 慮してデータの謝言制御 行うこ Wこなる„
[0177] DoutOはコア Aの機能部 3Aが出力する信号であ
[0178] enl、 en2はそれぞれフリップフロック 231及び 232のィネーブル信号であり、データ 出力;巽択制御冋路 202が出力する„ Doutlはフリップフロップ 23ίからの出力データ であり、 Dout2はフリップフロップ 232からの出力データである Dselは、データ入力撰 択制御回路 201からの制御信吾であ Dinは、フリップフロップ 2が出力するデータ である
[0179] 図 16に示すように、フリップフロップ 231のィネーブル信吾 enlは、フリップフロップ 2 31が 1サイクル毎に動作するように、 1サイクル毎に Highと Lowを交互に繰り返す信吾 であ 同様に、フリップフロップ 232のィネーブル信吾 en2は、フリップフロップ 232 力^サイクル毎に動作するように、 1サイクル毎に Highと Lowを交互に繰り返す信吾で あるが、フリップフロップ 232がフリップフロップ 231と交互に動作するように、 enlとは 木目が である
[0180] 図 16に示すように、クロック信吾 clkAの相番吾 3の立ち上がりエッジからクロック信 吾 clkBの相番吾 2の立ち上がりエッジ、及びクロック信吾 clkAの相番吾 6の立ち上がり エッジからクロック信吾 clkBの相番吾 4の立ち上がりエッジへの位相差が Td以下とな る このことは、クロック信晉 clkA及びクロック信晉 clkBの周波数とクロック信晉 clkBの 相番吾と力 わ力るので、このときデータ入力選択制御回路 201は、 clkAの相番吾 3 の立ち上がりエッジのタイミングでフリップフロップ 232が出力する Dout2よりもクロック clkAの 1サイクル遅延した Doutlをフリップフロップ 2が入力するデータとして選択する 同様に、相番吾 6の立ち上がりエッジのタイミングでフリップフロップ 231が出力する Doutlよりもクロック clkAの 1サイクル遅延した Dout2をフリップフロップ 2が入力するデ ータ して選択す それ以外の場合には、フリップフロップ 2が Doutlまたは Dout2の うち遅延して 、な ヽ方のデータを人力するように選択す Doutlまたは Dout2の ヽず れが遅延して ヽて 、ずれが遅延 ヽて ヽな 、かは、データ人力選択制御回路 201が 人力する dkA dkBの周 †青報、及び dkBのネ目番^^ら半 II断するこ がで
[0181] 次に、 Doutlまたは Dout2のいずれかを撰択する信号 Dselの詳細を説明す まず 、クロック信号 clkAの相番号 1の立ち卜.がりエッジのタイミングでフリップフロップ 232 が Dout2に出力したデータを、クロック信号 clkBの相番号 1の立ち卜.がりエッジのタイ ミングでフリップフロップ 2が Dmit2から 言するように、データ人力;巽択制御冋路 20 1はクロック信号 clkBの相番号 1の立ち卜.がりエッジのタイミングでは、 Dselに Highを 屮,力するハ
[0182] 次に、データ入力選択制御回路 201は、クロック信吾 clkAの相番吾 3の立ち上がり エッジのタイミングでフリップフロップ 232が出力したデータ Dout2ではなぐ clkAの相 番吾 2のタイミングでフリップフロップ 231が出力したデータ Doutlを受信するように、 クロック信吾 clkBの相番吾 2の立ち上がりエッジのタイミングでは、制御信吾 Dselを Lo wにする
[0183] 次に、クロック信吾 clkAの相番吾 4の立ち上がりエッジのタイミングでフリップフロッ プ 231が出力したデータ Doutlを入力するように、クロック信吾 clkBの相番吾 3の立ち 上がりエッジのタイミングでは、制御信吾 Dselを Lowにす
[0184] 次に、クロック信吾 clkAの相番吾 6の立ち上がりエッジのタイミングでフリップフロッ
プ 231が出力したデータ Doutlではなぐ clkAの相番吾 5のタイミングでフリップフロッ プ 232が出力したデータ Dout2を入力するように、クロック信吾 clkBの相番吾 4の立ち 上がりエッジのタイミングでは、制御信吾 Dselを Highにする
[0185] 次に、クロック信吾 clkAの相番吾 7の立ち上がりエッジのタイミングでフリップフロッ プ 232が出力したデータ Dout2を入力するように、クロック信吾 clkBの相番吾 0の立ち 上がりエッジのタイミングでは、制御信吾 Dselを Highにする
[0186] 以上により、非同期方式で問穎となるメタスタピリティ問穎を回避し動作がサイクル レベルで確定的で、かつ低レイテンシ、低スループットのコア間诵信を実現すること がで る
[0187] また、本実施例によれば、データ Doutl及び Dout2はクロック clkAの 2サイクル毎に 化し、 2サイクルの間はデータが安定しているため、 ¾施例 2や ¾施例 6のデータ D out及び Dout DLYがクロック clkAの 1サイクル毎に栾化するのに比べてタイミングに佘 があるので、特にフリップフロップ 2のホール 制約に閗して、タイミング設 tが容 になる 、う カ がある„
[0188] 十术した本実施例はコア Aにおいて 2つのフリップフロップ 231及び 232を交互に 動作させる構成である力 フリップフロップの数は 2つに限らず、 3っ以ト.であっても その場合、データ出力;巽択制御冋路は、それぞれにフリップフロップ 順々に 同時には 1つのフリップフロップのみが動作するように、各フリップフロップのイネーブ ル信 牛成する„フリップフロップが 3つの場合の構成例 阅 ί7に示す„
[0189] フリップフロップ 231、 232に加えて信吾 Dout3を出力する 3つ目のフリップフロップ 233を備え データ出力選択制御回路 204は、それぞれの 3つのフリップフロップ のィネーブル信吾 enl.en2.en3を出力し、 3つのフリップフロップが順々に動作するよ うに制御す データ入力選択制御回路 203は、 3つの信号 Doutl.
Dout2,Dout3のいずれか一つをフリップフロップが 2つの場合と同様に谪切に選択す る。この場合データ Doutl,Dout2及び Dout3はクロック clkAの 3サイクル毎に変化し 3 サイクルの間はデータが安定しているため、さらにタイミング設計が容易になるという 交力 がある
実施例 8
[0190] 上述した実施例において、クロック clkAと clkBはある一定周期 (相番吾 0)において立 ち上がり又は立ち下さりが一致するクロックであった力 クロック clkAと clkBが相番吾 0 において立ち上がり又は立ち下さりが一致する (すなわち位相差力 )クロックではなく て、ある一定値 TDhになるようなクロックであったとしても、上述した各実施例と同様の 方法でコア間诵信を実現することが可能である。この場合、クロック clkA及び clkBの 各エッジ間の位相差は、相番吾 0の時の位相差が 0のときに比べて TDhだけずれた位 木目 になる
[0191] 例えば、図 18に示すように、相番吾 0のときに clkAにくらべて clkBが TDhだけ遅くな る場合には、その他の相番吾のエッジ間の位相差は、相番吾 0の時の位相差が 0の 場合に比べて、 Tnhだけ *きくな データ跑 巽択制御冋 やデータ人力;巽択制 ^^ はそれ 慮してコア の謝言制御 行なうこ で、 术した ¾ 列 に コア 耐言 するこ がで
[0192] ¾施例 7 び^ Π 5に示した 、ネ目 0の Βきの ネ目 が 0ではな〈Trirであつ てネ、謝乍するように した^^ ^ Ιί 9に す„ 5の 5^の いは、データ人 力;巽択制御冋路 20ί データ人力;巽択制御冋路 205に置 ¾ ^てい データ人 力;巽キ尺制御^ 205は、 ネ目差 Tnh 力するこ で、 ネ目差 Tnh 慮した制御が 可能であ また、相番^ の時に位相差 0にするように調整する' 、耍がないので、 位相調整冋路 ίθ 省略している„すなわち、本構成によれば、位相 調整するのに
' 、 な^^の rwff や 力 削減するこ がで る 、う カ がある„
実施例 9
[0193] hi术した実窗列において、 正設計彼 Tdは設 f 時に決定する定数である して説
S月したが、 謝乍 に ¾^ τ な であってもよい。
[0194] その場合、データ跑 巽択制御冋路ゃデータ人力;巽択制御冋路は Tdの値 謝乍 に 慮してコア の謝言制御 行なう で、 术した ¾ 列 様にコア 耐言 するこ がで る„
[0195] ¾施例 7 び^ Π 5に示した 、謝乍時に Tdが ¥ Γ なように 専した
阅 20に示す„阅 ί5の構成 の いは、データ人力;巽択制御冋路 20ί データ人 力;巽択吿 I刚冋 206に置 ¾ たのみであ データ人力;巽択吿 I刚冋 206は、 »
延設計彼 Tdを人力するこ で、謝乍時の Tdの栾更に ί自従した制御が可能であ す なわち、本構成によれば、クロック clkAや clkBのジッタの大きさや clkAと clkB間のスキ ユーの大^:さに]^じて、 正設計彼 Tdを滴]^的に 軟に設定で る為、 ji咼乗 IIなタイミ ング佘裕を削減するこ ができ、結 してコア間謝言の信頼件を確保しつつ、 mm の件能を ト.するこ がで^:る いう ¾ がある
図面の簡単な説明
[0196] [図 1]図 1は、本発明における実施例 1の構成例である。
[図 2]図 2は、タイミングチャートである。
[図 3]図 3は、 Td及び Tdlyを説明するための図である。
[図 4]図 4は、本発明の実施例 1の動作を説明するためのタイミングチャートである。
[図 5]図 5は、本発明の実施例 1の動作を説明するためのタイミングチャートである。
[図 6]図 6は、本発明の実施例 2の構成例である。
[図 7]図 7は、本発明の実施例 2の動作を説明するためのタイミングチャートである。
[図 8]図 8は、本発明の実施例 3の構成例である。
[図 9]図 9は、本発明の実施例 4を説明するためのブロック図である。
[図 10]図 10は、本発明の実施例 4のバス.インターフェースの構成例である。
[図 11]図 11は、本発明の実施例 5のオンチップ ·デバッグ回路の構成例である。
[図 12]図 12は、従来の同期式回路の構成図である。
[図 13]図 13は、従来の非同期式回路の構成図である。
「闵141本発明の実施例 6の構成を示す^!であ
「闵151本発明の実施例 7の構成を示す^!であ
「図 161本発明の実施例 7の動作を示すタイミングチャートであ
「阅 171本 明の ¾ 列 7の第 2の構成 示す阅であ
「阅 181本 明の ¾施例 8の謝乍 説明するタイミングチャートであ
「阅 191本 明の ¾ 列 8の構成 示す阅であ
「阅 201本 明の ¾ 列 9の構成 示す阅であ
符号の説明
[0197] 1 コア Aのフリップフロップ
コア Bのフリップフロップ 位相調整回路
ハンドシェイク回路 同期式 SRフリップフロップ レべノレシフタ
データ出力制御回路 データ入力制御回路 データ選択制御回路
CLK生成部
履歴保存部
解析部
レべノレシフタ