JP4998699B2 - 半導体装置、及び通信制御方法 - Google Patents

半導体装置、及び通信制御方法 Download PDF

Info

Publication number
JP4998699B2
JP4998699B2 JP2006535225A JP2006535225A JP4998699B2 JP 4998699 B2 JP4998699 B2 JP 4998699B2 JP 2006535225 A JP2006535225 A JP 2006535225A JP 2006535225 A JP2006535225 A JP 2006535225A JP 4998699 B2 JP4998699 B2 JP 4998699B2
Authority
JP
Japan
Prior art keywords
data
clock signal
signal
control
semiconductor device
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.)
Active
Application number
JP2006535225A
Other languages
English (en)
Other versions
JPWO2006030904A1 (ja
Inventor
充文 柴山
浩一 野瀬
正之 水野
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 JP2006535225A priority Critical patent/JP4998699B2/ja
Publication of JPWO2006030904A1 publication Critical patent/JPWO2006030904A1/ja
Application granted granted Critical
Publication of JP4998699B2 publication Critical patent/JP4998699B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0008Synchronisation information channels, e.g. clock distribution lines
    • H04L7/0012Synchronisation information channels, e.g. clock distribution lines by comparing receiver clock with transmitter clock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0016Arrangements for synchronising receiver with transmitter correction of synchronization errors
    • H04L7/0033Correction by delay
    • H04L7/0041Delay of data signal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Systems (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Description

機能ブロックを複数有する半導体装置に関し、特に、異なるクロック周波数で動作する複数のコア間で通信する半導体装置及びその方法に関する。
従来、異なるクロック周波数で動作するコア(機能ブロック)同士の通信方法には、主に同期方式及び非同期方式の2種類がある。
図12は、同期方式を用いて通信する半導体装置を示す図である。
このような半導体装置において、コアAとコアBとで通信する場合、同期方式では通信する2つのコアの各クロックの周波数比が1対整数倍(例えば、1:2, 1:3, ...等)や、1対整数分の1倍(例えば、1:1/2, 1:1/3, ...等)であり、かつ2つのクロックの位相が等しいことが条件となる。すなわち、同期通信はクロック同士が同期しているコア間でのみ行うことが出来る通信方法である。
図13は、非同期方式を用いて通信する半導体装置を示す図である。
2つのコアの各クロックの周波数比が1対整数倍や、1対整数分の1倍ではなく、かつ2つのクロックの位相が等しくないコア間で行われる通信が非同期通信である。非同期方式を用いて通信すると、信号を出力するタイミングと信号を入力するタイミングとが非同期関係になり、信号が“0”と“1”との間をある時間揺らぐ状態(この状態をmetastability:メタスタビリティという)になるので、メタスタビリティによる誤動作を防止する為、通常、同期化回路が用いられる技術が提案されている(例えば、特許文献1)。
特許文献1に記載の技術は、第1のクロック信号に同期して所定の動作を行う第1のコアと、第2のクロック信号に同期して所定の動作を行う第2のコアとの間に同期化回路を設けている。そして、この同期化回路は第1のコアの出力データを第1のクロック信号に同期してラッチし、ラッチした信号を第2のクロック信号に同期して出力している。
また、上記以外にもメタスタビリティによる誤動作を防止する技術が提案されている(例えば、特許文献2)。
特許文献2に記載の技術は、データ入力信号とクロック入力信号の変化を検知し、セットアップ若しくはホールドタイムを満足しない場合にフリップフロップのデータ入力の信号を変更しないように制御して、メタスタビリティによる誤動作を防止している。
特開2003‐273847号 特開平6‐45880号
従来の同期方式は、各コアのクロック周波数比が1対整数倍や1対整数分の1倍に限定されるという問題がある。この制限は通信するコアの数が増加するにつれて益々深刻になる。
さらに近年、消費電力の低減の為に、各コア毎に周波数及び電源電圧を動作時に動的に変更する動的周波数電圧制御方式(Dynamic Frequency Voltage Scaling: DFVS)が提案されている。コア毎にDFVSを実施する場合、電源電圧が変更されることによりクロックの分配遅延が変化するため、コア間で同期関係が保てなくなる。すなわち、従来の同期方式では通信できないという問題がある。また、各コアが設定できるクロック周波数が限定されていると、DFVSの低電力化に対する効果が減少するという問題がある。
一方、上述した特許文献1のような非同期方式には主に次に示す問題がある。
第1に、非決定性動作の問題がある。チップデバイスの特性ばらつきや動作環境等に依存して、クロックサイクルのレベルでの動作が非決定的(nondeterministic)になる。その結果、ハードウェア/ソフトウェアの検証・デバックやテストにかかるコストが増大してしまう。
第2に、通信レイテンシが大きいという問題がある。同期化に要する遅延の為に通信レイテンシが増加し、通信スループットが低下する。その結果、性能の低下や、それを補償するために面積・電力が増加してしまう。
第3に、メタスタビリティによる誤動作の可能性があり、この結果、信頼性が低下するという問題がある。これは、クロック周波数の増加や低電圧化や同期化を行う箇所の増加にともない益々悪化する。信頼性を向上するには、メタスタビリティを解消する為の時間を十分に確保する必要があるが、その結果、同期化に要する遅延が益々増大し、通信レイテンシが増加する。
又、上述した特許文献2の技術は、動作時にデータ入力信号とクロック入力信号の変化を検知し、セットアップ若しくはホールドタイムを満足しているか否かを判断するが、チップデバイスの特性ばらつきや動作環境等に依存してその判断基準が変動するため、クロックサイクルのレベルでの動作が非決定的になるという問題がある。
そこで、本発明の目的は、上記問題点を鑑みて発明されたものであって、各コアが設定できるクロック周波数の自由度が大きく、動作が決定的(deterministic)で、通信レイテンシが小さく、信頼性の高い、コア間の通信ができる技術を提供することにある。
又、本発明の目的は、半導体装置内の通信履歴から半導体装置の性能に影響を与える要因を解析し、次世代の半導体装置に反映させることにより、信頼性の高い半導体装置を提供することにある。
上記課題を解決するための第1の発明は、半導体装置であって、第1のクロック信号に基づいてデータを出力する第1の信号処理回路と、ある一定の周期で第1のクロック信号の立ち上がり又は立ち下がりと一致する第2のクロック信号に基づいてデータ入力する第2の信号処理回路と、前記第1のクロック信号及び前記第2のクロック信号に関する情報に基づいて、前記第2のクロック信号のセットアップ時間より前に前記第2の信号処理回路に到着するデータのみを出力するように前記第1の信号処理回路を制御する第1の制御信号を生成して、この生成した第1の制御信号を前記第1のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる、又は前記セットアップ時間より前に到着するデータのみを入力するように前記第2の信号処理回路を制御する第2の制御信号を生成して、この生成した第2の制御信号を前記第2のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる制御回路とを有することを特徴とする。
上記課題を解決するための第2の発明は、半導体装置であって、第1のクロック信号に基づいてデータを出力する第1の信号処理回路と、ある一定の周期で第1のクロック信号の立ち上がり又は立ち下がりとの位相差がある一定値になる第2のクロック信号に基づいてデータ入力する第2の信号処理回路と、前記第1のクロック信号及び前記第2のクロック信号に関する情報に基づいて、前記第2のクロック信号のセットアップ時間より前に前記第2の信号処理回路に到着するデータのみを出力するように前記第1の信号処理回路を制御する第1の制御信号を生成し、この生成した第1の制御信号を前記第1のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる、又は前記セットアップ時間より前に到着するデータのみを入力するように前記第2の信号処理回路を制御する第2の制御信号を生成し、この生成した第2の制御信号を前記第2のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる制御回路とを有することを特徴とする。
上記課題を解決するための第3の発明は、上記第1又は第2の発明において、前記制御回路は、前記第1のクロック信号に同期して複数のデータを入力された順に、ある一定の周期に予め定められた数のデータを出力するように制御する前記第1の制御信号を生成する出力制御回路であることを特徴とする。
上記課題を解決するための第4の発明は、上記第1又は第2の発明において、前記制御回路は、複数のデータの中から前記セットアップ時間より前に到着するデータを選択して入力するように制御する前記第2の制御信号を生成する入力制御回路であることを特徴とする。
上記課題を解決するための第5の発明は、上記第1又は第2の発明において、前記制御回路は、前記セットアップ時間より前に到着しないデータを出力しないように前記第1の信号処理回路を制御する前記第1の制御信号を生成する出力制御回路であることを特徴とする。
上記課題を解決するための第6の発明は、上記第1又は第2の発明において、前記制御回路は、前記セットアップ時間より前に到着しないデータを入力しないように前記第2の信号処理回路を制御する前記第2の制御信号を生成する入力制御回路であることを特徴とする。
上記課題を解決するための第7の発明は、上記第1又は第2の発明において、前記制御回路は、前記セットアップ時間より前に到着しないデータは、データを一定時間だけ遅延させる遅延部で遅延させたデータを入力するように制御する前記第2の制御信号を生成する遅延選択制御回路であることを特徴とする。
上記課題を解決するための第8の発明は、上記第7の発明において、前記遅延部は、前記セットアップより前に到着しないデータを前記第2のクロック信号の1クロック分遅延させることを特徴とする。
上記課題を解決するための第9の発明は、上記第1から第8のいずれかの発明において、前記データは、
前記第1のクロックに同期して所定の動作を行う第1の機能部から出力される、処理要求を示す処理要求データ、若しくは処理要求データを受信したことを示す処理要求リセットデータであることを特徴とする。
上記課題を解決するための第10の発明は、上記第9の発明において、前記処理要求データ及び前記処理要求リセットデータは、前記第1の機能部と、前記第2のクロックに同期して所定の動作を行う第2の機能部との間で送受信されるデータであることを特徴とする。
上記課題を解決するための第11の発明は、上記第9の発明において、前記処理要求データ及び前記処理要求リセットデータは、前記第1の機能部と、バスとの間で送受信されるデータであることを特徴とする。
上記課題を解決するための第12の発明は、上記第1から第11のいずれかの発明において、前記半導体装置は、
前記データの送受信中の動作状況を履歴情報として保持する履歴保存手段を有することを特徴とする。
上記課題を解決するための第13の発明は、上記第12の発明において、前記半導体装置は、
前記履歴保存手段が保持する履歴情報に基づいて、半導体装置の性能低下の原因を解析する解析手段を有することを特徴とする。
上記課題を解決するための第14の発明は、上記第12又は第13の発明において、前記履歴保存手段は、前記履歴情報を外部に出力する出力手段を有することを特徴とする。
上記課題を解決するための第15の発明は、上記第1から第14のいずれかの発明において、前記セットアップ時間を、動作時に動的に変更することを特徴とする。
上記課題を解決するための第16の発明は、上記第1又は第2の発明において、前記第1の信号処理回路は、前記第1のクロック信号の異なるサイクルでデータを出力する複数のフリップフロップを有し、前記制御回路は、前記複数のフリップフロップの出力の中から前記セットアップ時間より前に到着する出力を、前記第2の信号処理回路が選択して入力するように、前記第2の制御信号によって制御することを特徴とする。
上記課題を解決するための第17の発明は、半導体装置の通信制御方法であって、第1のクロック信号に基づいてデータを出力する第1の信号処理ステップと、ある一定の周期で第1のクロック信号の立ち上がり又は立ち下がりと一致する第2のクロック信号に基づいてデータ入力する第2の信号処理ステップと、前記第1のクロック信号及び前記第2のクロック信号に関する情報に基づいて、前記第2のクロック信号のセットアップ時間より前に前記第2の信号処理回路に到着するデータのみを出力するように前記第1の信号処理回路を制御する第1の制御信号を生成して、この生成した第1の制御信号を前記第1のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる又は前記セットアップ時間より前に到着するデータのみを入力するように前記第2の信号処理回路を制御する第2の制御信号を生成して、この生成した第2の制御信号を前記第2のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる制御ステップとを有することを特徴とする。
上記課題を解決するための第18の発明は、半導体装置の通信制御方法であって、第1のクロック信号に基づいてデータを出力する第1の信号処理ステップと、ある一定の周期で第1のクロック信号の立ち上がり又は立ち下がりとの位相差がある一定値になる第2のクロック信号に基づいてデータ入力する第2の信号処理ステップと、前記第1のクロック信号及び前記第2のクロック信号に関する情報に基づいて、前記第2のクロック信号のセットアップ時間より前に前記第2の信号処理回路に到着するデータのみを出力するように前記第1の信号処理回路を制御する第1の制御信号を生成し、この生成した第1の制御信号を前記第1のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる、又は前記セットアップ時間より前に到着するデータのみを入力するように前記第2の信号処理回路を制御する第2の制御信号を生成し、この生成した第2の制御信号を前記第2のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる制御ステップとを有することを特徴とする。
上記課題を解決するための第19の発明は、上記第17又は第18の発明において、前記制御ステップは、前記第1のクロック信号に同期して複数のデータを入力された順に、ある一定の周期に予め定められた数のデータを出力するように制御する前記第1の制御信号を生成することを特徴とする。
上記課題を解決するための第20の発明は、上記第17又は第18の発明において、前記制御ステップは、複数のデータの中から前記セットアップ時間より前に到着するデータを選択して入力するように制御する前記第2の制御信号を生成することを特徴とする。
上記課題を解決するための第21の発明は、上記第17又は第18の発明において、前記制御ステップは、前記セットアップ時間より前に到着しないデータを出力しないように制御する前記第1の制御信号を生成することを特徴とする。
上記課題を解決するための第22の発明は、上記第17又は第18の発明において、前記制御ステップは、前記セットアップ時間より前に到着しないデータを入力しないように制御する前記第2の制御信号を生成することを特徴とする。
上記課題を解決するための第23の発明は、上記第17又は第18の発明において、前記制御ステップは、前記セットアップ時間より前に到着しないデータは、データを一定時間だけ遅延させる遅延部で遅延させたデータを入力するように制御する前記第2の制御信号を生成することを特徴とする。
上記課題を解決するための第24の発明は、上記第23の発明において、前記制御ステップは、前記セットアップ時間より前に到着しないデータを前記遅延部で前記第2のクロック信号の1遅延させることを特徴とする。
上記課題を解決するための第25の発明は、上記第17から第20のいずれかの発明において、前記制御ステップは、前記セットアップ時間を、動作時に動的に変更することを特徴とする。
上記課題を解決するための第26の発明は、上記第17又は第18の発明において、前記制御ステップは、前記第1のクロック信号の異なるサイクルで出力されるデータの中から前記セットアップ時間より前に到着する出力を選択して入力するように、前記第2の制御信号によって制御することを特徴とする。
本発明の半導体装置は、送信する側のクロックと受信側のクロックのエッジ間の時間差が、ある設計時に決定する遅延設計値Tdよりも大きい場合はデータ通信し、小さい場合はデータ通信しない。
データを通信しない第1の方法として、送信側がそのクロックエッジではデータを出力しない、または受信側がそのクロックエッジではデータを入力しない方法がある。第2の方法として、データを遅延させて受信側が受信側の次のクロックのエッジで入力するようにする。
本発明によると、設計時に予め想定する範囲内で、各コアのクロック周波数を自由に設定することが可能であり、そのクロックにより同期的に通信しているため、動作が決定的で、通信レイテンシが小さく、信頼性の高い、コア間通信を実現することができる。又、これにより、非同期方式で問題となるメタスタビリティ問題を回避し、動作がサイクルレベルで確定的で、かつ低レイテンシ、低スループットのコア間通信を実現することができる。
更に、半導体装置内の通信履歴から半導体装置の性能に影響を与える要因を解析しているので、次世代の半導体装置に反映させ、信頼性の高い半導体装置を提供することができる。
本発明の実施の形態を説明する。
本発明の半導体装置は、クロック信号clkAに同期してデータを送信するコアAと、ある一定の周期でクロック信号clkAの立ち上がり又は立ち下がりと一致するクロック信号clkBに同期してデータ受信するコアBと、コアAとコアBとの間の通信を制御する制御部とを有する。
制御部は、クロック信号clkBのセットアップ時間より前に到着するデータのみをコアBが受信できるように制御する。
制御する方法としては、クロック信号clkAの立ち上がりエッジとその立ち上がりのすぐ後に立ち上がるクロック信号clkBの立ち上がりエッジとの位相差に相当する時間が遅延設計値Td以下の場合には、コアAはデータを出力しない又はコアBは入力しないように制御する。あるいは、クロック信号clkAの立ち上がりエッジとその立ち上がりのすぐ後に立ち上がるクロック信号clkBの立ち上がりエッジとの位相差に相当する時間がTd以下の場合には、データを遅延させてコアBが次のクロックエッジのタイミングで入力できるように制御する。
以下に具体的な実施例を説明する。
本発明における実施例1について説明する。
図1は、本発明における実施例1の半導体装置の構成図である。
コアA及びコアBは、所定の機能を有する回路ブロックであり、例えばCPU(Central Processing Unit)やDSP(Digital Signal Processor)等である。各コアは、各々に入力される各クロックに同期して所定の処理を行う。
ここで、各コアに入力されるクロック信号について説明する。
図2は、コアAに入力されるクロック信号clkA及びコアBに入力されるクロック信号clkBのタイミングチャートである。
クロック信号clkAとクロック信号clkBとの周波数は、任意の基準周波数をf(f>0)とした場合、クロック信号clkAはmf、クロック信号clkBはnf(m,
nは整数)になるように設計される。また、クロック信号clkAとクロック信号clkBとの位相関係が常に一定になるように、即ち、ある一定の周期で各クロック信号の立ち上がり又は立ち下がりが一致するように、各コアに入力される前に位相調整回路10で調整される。このように調整されたクロック信号clkAはmサイクル毎にクロック信号clkBに対する位相関係が一巡(位相が一致)し、クロック信号clkBはnサイクル毎にクロック信号clkAに対する位相関係が一巡(位相が一致)する。図2は、例として上記mが8、nが5である場合、すなわちクロック信号clkAの周波数が8f、クロック信号clkBの周波数が5fである場合を示している。この場合、クロック信号clkAは8サイクル毎、クロック信号clkBは5サイクル毎にそれぞれのクロック信号の立ち上がりが一致する。また、クロック信号clkAとクロック信号clkBとの立ち上がりが一致するサイクルを0として、それぞれのクロックの各サイクルにつけた番号を相番号と呼ぶことにする。相番号が0のサイクルから、クロック信号clkAはmサイクル後、クロック信号clkBはnサイクル後に再びそれぞれのクロックの立ち上がりが一致するので、相番号はそれぞれm及びnで充分となる。尚、位相調整回路10は、例えばDLL(Digital Locked
Loop)回路等の遅延調整回路により実現することが出来る。たとえ、各コアの電圧が動的に変化する場合でも、それに追従して動的に位相調整することが可能である。
再び図1を参照すると、コアAは、クロック信号clkAに同期して所定の動作を行う各種機能部3Aと、フリップフロップ1と、データ出力制御回路101とを有する。ここで、機能部とは例えばCPUやDSP等における機能実行部に相当する。
フリップフロップ1は、データ出力制御回路101の制御に基づいて、信号をクロック信号clkAに同期して出力する。尚、本実施例では、クロック信号clkAの立ち上がりエッジのタイミングで出力する場合を用いて説明するが、クロック信号clkAの立ち下がりエッジのタイミングで出力してもよい。
データ出力制御回路101は、コアAからコアBへデータを送信する場合、コアAからコアBへのデータ送信時間を考慮して、コアBのフリップフロップ2のセットアップ時間より前に到着するデータのみを送信するように、クロック信号clkA及びクロック信号clkBの周波数とクロック信号clkAの相番号とに基づいてフリップフロップ1を制御する。詳細に述べると、例えば図2のクロック信号clkAの相番号3の立ち上がりエッジのタイミングでデータを出力すると、このデータを入力するタイミングは、クロック信号clkAの相番号3の立ち上がりエッジより後のクロック信号clkBの立ち上がりエッジのタイミングである。しかしながら、クロック信号clkBの相番号2の立ち上がりエッジのようにクロック信号clkAの立ち上がりエッジから、その後に立ち上がるクロック信号clkBの立ち上がりエッジまでの時間が短すぎると、正しいデータを入力することができない。従ってデータ出力制御回路101は、クロック信号clkAの立ち上がりエッジからその後に立ち上がるクロック信号clkBの立ち上がりエッジまでの位相差に相当する時間が遅延設計値Td以下の場合には、クロック信号clkAの相番号3の立ち上がりエッジのタイミングではデータを出力しないようにフリップフロップ1を制御する。また、図2のクロック信号clkAの相番号0及び相番号1のように、クロック信号clkBの相番号1の立ち上がりエッジまでの位相差が遅延設計値Td以上である立ち上がりエッジが2つある場合、どちらか一方の立ち上がりエッジのタイミングではデータを出力しないようにフリップフロップ1を制御するか、若しくはコアAの機能部3A自身がどちらか一方のサイクルにのみフリップフロップ1へデータを出力するように制御する。
コアBはクロック信号clkBに同期して所定の動作を行う各種機能部3Bと、フリップフロップ2と、データ入力制御回路102とを有する。
フリップフロップ2は、データ入力制御回路102の制御に基づいて、信号をクロック信号clkBに同期して入力する。尚、本実施例では、クロック信号clkBの立ち上がりエッジのタイミングで入力する場合を用いて説明するが、クロック信号clkBの立ち下がりエッジのタイミングで入力してもよいものとする。
データ入力制御回路102は、コアAからコアBへデータを送信する場合、データの到着がコアBのフリップフロップ2のセットアップ時間に間に合わないデータを入力しないように、クロック信号clkA及びクロック信号clkBの周波数とクロック信号clkBの相番号とに基づいてフリップフロップ2を制御する。詳細に述べると、クロック信号clkAのある立ち上がりエッジからクロック信号clkBのある立ち上がりエッジまでの位相差が遅延設計値Td以下の場合には、そのサイクルではデータを入力しないようにフリップフロップ2を制御する。
ここで、遅延設計値Tdの決定方法について図3を参照して説明する。
遅延設計値Tdは、フリップフロップ1がクロック信号clkAのある立ち上がりエッジのタイミングでデータ送信を開始してからコアBが受信するまでの時間であるデータ送信時間を考慮して設定する。詳細には、クロック信号clkAとクロック信号clkBとの間のクロックスキューの時間+クロックジッタの時間をTskewG、フリップフロップの遅延時間をTff、フリップフロップのセットアップ時間をTsu、最小サイクル時間(最大周波数時のサイクル時間)をTcyc(min)とすると、遅延設計値Tdは、Tcyc(min)>Td>TskewG+Tsu+Tffとなるように設定することになる。
続いて、本実施例の動作について説明する。尚、本実施例では、m=8、n=5の場合を用いて説明する。
図4は、本実施例においてコアAからコアBにデータを送信する際にデータ出力制御回路101がデータの出力を制御する場合の動作を説明するためのタイムチャートである。
図中のクロック信号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からの制御信号である。Din_ENは、データ出力制御回路102からの制御信号である。Doutは、フリップフロップ1が出力する入力信号である。Dinは、フリップフロップ2が出力し、コアBの機能部3Bが入力する信号である。
ここで、遅延設計値Tdとしてクロック信号clkAのサイクル時間の半分を選択した場合、図4に示すように、クロック信号clkAの相番号3の立ち上がりエッジからクロック信号clkBの相番号2の立ち上がりエッジ、及びクロック信号clkAの相番号6の立ち上がりエッジからクロック信号clkBの相番号4の立ち上がりエッジへの位相差に相当する時間がTd以下になる。このことは、クロック信号clkA及びクロック信号clkBの周波数とクロック信号clkAの相番号とからわかるので、この場合、データ通信しないようにデータ出力制御回路101は制御することになる。
コアAがデータを出力しないように制御する場合、データ出力制御回路101はクロック信号clkAの周波数8f、クロック信号clkBの周波数5f及びクロック信号clkAの相番号0〜7が与えられるので、クロック信号clkAの相番号3及び6の立ち上がりエッジのタイミングで出力しないように制御する。また、クロック信号clkAの相番号0及び1の立ち上がりエッジのタイミングで出力されたデータを、クロック信号clkBの相番号1の立ち上がりエッジのタイミングで入力することが出来るが、ここではクロック信号clkAの相番号1の立ち上がりエッジのタイミングで出力されたデータを受け取るようにする為、相番号0のタイミングではデータを出力しないように出力制御回路101が制御する場合について説明する。
まず、データ出力制御回路101は、クロック信号clkAの相番号1及び2でデータを出力するように、クロック信号clkAの相番号0の立ち上がりエッジのタイミングで制御信号Dout_ENをHighにする。
データ出力制御回路101は、クロック信号clkAの相番号3の立ち上がりエッジのタイミングでフリップフロップ1がデータを出力しないように、クロック信号clkAの相番号2の立ち上がりエッジのタイミングからホールド時間経った後、制御信号Dout_ENをLowにする。
クロック信号clkAの相番号4の立ち上がりエッジのタイミングでフリップフロップ1がデータを出力できるように、クロック信号clkAの相番号3の立ち上がりエッジのタイミングからホールド時間経った後、制御信号Dout_ENをHighにする。
データ出力制御回路101は、クロック信号clkAの相番号6の立ち上がりエッジのタイミングでフリップフロップ1がデータを出力しないように、クロック信号clkAの相番号5の立ち上がりエッジのタイミングからホールド時間経った後、制御信号Dout_ENをLowにする。
クロック信号clkAの相番号7の立ち上がりエッジのタイミングでフリップフロップ1がデータを出力できるように、クロック信号clkAの相番号6の立ち上がりエッジのタイミングからホールド時間経った後、制御信号Dout_ENをHighにする。
次に、クロック信号clkAの相番号0の立ち上がりエッジのタイミングでフリップフロップ1がデータを出力しないように、クロック信号clkAの相番号7の立ち上がりエッジのタイミングで制御信号Dout_ENをLowにする。
以上の動作を繰り返すことにより、非同期方式で問題となるメタスタビリティ問題を回避し、動作がサイクルレベルで確定的で、かつ低レイテンシ、低スループットのコア間通信を実現することができる。
位相差に相当する時間がTd以下の場合に、データを通信しないように制御する方法として、上述したコアAがそのタイミングではデータを出力しないようにデータ出力制御回路101がフリップフロップ1を制御する方法と、コアBがそのタイミングではデータを入力しないようにデータ入力制御回路102がフリップフロップ2を制御する方法がある。
次に、データ入力制御回路102がフリップフロップ2を制御する方法について説明する。
図5は、本実施例においてコアAからコアBにデータを送信する際にデータ入力制御回路102がデータの入力を制御する場合の動作を説明するためのタイムチャートである。
コア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つの立ち上がりエッジのタイミングでしかデータを出力しないとする。
まず、データ入力制御回路102は、クロック信号clkAの相番号3の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータを、クロック信号clkBの相番号2の立ち上がりエッジのタイミングでフリップフロップ2が入力しないように、クロック信号clkBの相番号1の立ち上がりエッジのタイミングで制御信号Din_ENをLowにする。
クロック信号clkAの相番号4の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータを、クロック信号clkBの相番号3の立ち上がりエッジのタイミングでフリップフロップ2が入力できるように、クロック信号clkBの相番号2の立ち上がりエッジのタイミングで制御信号Din_ENをHighにする。
データ入力制御回路102は、クロック信号clkAの相番号6の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータを、クロック信号clkBの相番号4の立ち上がりエッジのタイミングでフリップフロップ2が入力しないように、クロック信号clkBの相番号3の立ち上がりエッジのタイミングで制御信号Din_ENをLowにする。
クロック信号clkAの相番号7の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータを、クロック信号clkBの相番号0の立ち上がりエッジのタイミングでフリップフロップ2が入力できるように、クロック信号clkBの相番号4の立ち上がりエッジのタイミングで制御信号Din_ENをHighにする。また、クロック信号clkAの相番号1の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータは、制御信号Din_ENがHighのままであるため、クロック信号clkBの相番号1の立ち上がりエッジのタイミングでフリップフロップ2が入力する。
以上の動作を繰り返すことにより、非同期方式で問題となるメタスタビリティ問題を回避し、動作がサイクルレベルで確定的で、かつ低レイテンシ、低スループットのコア間通信を実現することができる。
尚、本実施例ではデータ出力制御回路101とデータ入力制御回路102とを有する半導体装置を構成例に挙げて説明したが、これに限るものではない。即ち、どちらか一方を有した構成であればよい。また、本実施例では、コアAからコアBにデータを送信する場合について説明したため、コアAがデータ出力制御回路101を、コアBがデータ入力制御回路102を有する構成であったが、コアBからコアAにデータを送信する場合は、コアAがデータ入力制御回路102を、コアBがデータ出力制御回路101を有する構成となる。又、コアA及びコアBにデータ出力制御回路101又はデータ入力制御回路102を有する構成をとり、コアAとコアBとでデータ送受信する構成であっても良い。
実施例1において、位相差に相当する時間が遅延設計値Td以下の場合にデータを通信しない方法として、そのタイミングではデータを出力しない又は入力しない方法について説明したが、データを遅延させてコアBが次のクロックエッジのタイミングで入力できるようにしてもよい。本実施例では、データを遅延させる方法について説明する。尚、上述した実施例と同様の構成については、同一番号を付し、詳細な説明を省略する。
図6は、本実施例の半導体装置の構成を示す図である。
フリップフロップ1は、信号をクロック信号clkAに同期して出力する。尚、本実施例では、クロック信号clkAの立ち上がりエッジのタイミングで出力する場合を用いて説明するが、クロック信号clkAの立ち下がりエッジのタイミングで出力してもよいものとする。
フリップフロップ2は、信号をクロック信号clkBに同期して入力する。尚、本実施例では、クロック信号clkBの立ち上がりエッジのタイミングで入力する場合を用いて説明するが、クロック信号clkBの立ち下がりエッジのタイミングで入力してもよいものとする。
遅延素子30は、フリップフロップ1から出力されたデータを遅延値Tdly時間だけ遅延させる。
ここで、遅延値Tdlyの決定方法について図3を参照して説明する。
遅延値Tdlyは、遅延設計値Td同様、コアAがクロック信号clkAのある立ち上がりエッジでデータ送信開始してからコアBが受信するまでの時間であるデータ送信時間を考慮して設定する。
最小サイクル時間(最大周波数時のサイクル時間)をTcyc(min)、クロック信号clkAとクロック信号clkBとの間のクロックスキュー+クロックジッタをTskewG、クロック信号clkA内またはクロック信号clkB内のクロックスキュー+クロックジッタをTskewL、クロック信号clkAとクロック信号clkBの位相差をTpd、フリップフロップの遅延をTff、フリップフロップのセットアップ時間をTsu、フリップフロップのホールド時間をThoとすると、TdlyはTskewG+Tsu+Tho<Tdly<Tcyc(min)−TskewL−Tsu−Tffとなるように設定する。
データ遅延選択制御回路103は、クロック信号clkAの周波数、クロック信号clkBの周波数及びクロック信号clkBの相番号に基づいて、コアAからの出力データであるDoutまたは、その出力を遅延素子30が遅延値Tdly時間だけ遅延させたDout_DLYのいずれかからのデータをフリップフロップ2が入力するかセレクタ4を制御する。
セレクタ4は、データ遅延選択制御回路103からの制御信号Dselに基づいて、DoutまたはDout_DLYの出力値を選択する。
続いて、本実施例における動作について説明する。
図7は、データ遅延選択制御回路103の動作を説明するためのタイミングチャートである。尚、本実施例では、基準周波数をfとして、クロック信号clkAの周波数が8f、クロック信号clkBの周波数が5fとした場合の動作を説明する。
図中のクロック信号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が出力するデータである。
図7に示すように、クロック信号clkAの相番号3の立ち上がりエッジからクロック信号clkBの相番号2の立ち上がりエッジ、及びクロック信号clkAの相番号6の立ち上がりエッジからクロック信号clkBの相番号4の立ち上がりエッジへの位相差がTd以下となる。このことは、クロック信号clkA及びクロック信号clkBの周波数とクロック信号clkBの相番号とからわかるので、このときデータ遅延選択制御回路103は、clkAの相番号3及び相番号6の立ち上がりエッジのタイミングでフリップフロップ1が出力するデータを遅延素子によりTdlyだけ遅延されたデータをフリップフロップ2が入力するデータとして選択する。すなわち、クロック信号clkAの相番号3の立ち上がりエッジからクロック信号clkBの相番号2の立ち上がりエッジ、及びクロック信号clkAの相番号6の立ち上がりエッジからクロック信号clkBの相番号4の立ち上がりエッジでデータを送受信する代わりに、遅延素子30でTdlyだけ遅延させたデータをフリップフロップ2が入力するようにセレクタ4を制御することにより、クロック信号clkAの相番号3の立ち上がりエッジからクロック信号clkBの相番号3の立ち上がりエッジ、及びクロック信号clkAの相番号6のクロックエッジからクロック信号clkBの相番号0の立ち上がりエッジのタイミングで入力するように制御する。
まず、クロック信号clkAの相番号0又は1の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータを、クロック信号clkBの相番号1の立ち上がりエッジのタイミングでフリップフロップ2がDoutから受信するように、データ遅延選択制御回路103はクロック信号clkBの相番号1の立ち上がりエッジのタイミングでは、DselにLowを出力する。
データ遅延選択制御回路103は、クロック信号clkAの相番号3の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータをDout_DLYから受信するように、クロック信号clkBの相番号1の立ち上がりエッジのタイミングで、制御信号DoutをHighにする。
クロック信号clkAの相番号4の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータをDoutから入力するように、クロック信号clkBの相番号2の立ち上がりエッジのタイミングで、制御信号DselをLowにする。
クロック信号clkAの相番号6の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータを、Dout_DLYから入力するように、クロック信号clkBの相番号3の立ち上がりエッジのタイミングで、制御信号DselをHighにする。
クロック信号clkAの相番号7の立ち上がりエッジのタイミングでフリップフロップ1が出力したデータを、Doutから入力するように、クロック信号clkBの相番号4の立ち上がりエッジのタイミングで、制御信号DselをLowにする。
以上により、非同期方式で問題となるメタスタビリティ問題を回避し、動作がサイクルレベルで確定的で、かつ低レイテンシ、低スループットのコア間通信を実現することができる。
本実施例では、上述した半導体装置を使用したハンドシェイク回路について説明する。尚、上述した構成と同様の構成については同一番号を付し、詳細な説明を省略する。また、本実施例では上述した実施例2を用いた場合について説明するが、実施例1で説明した半導体装置を用いてもよい。
図8は、上述した実施例2の半導体装置を用いたリクエストのハンドシェイク回路を示す図である。尚、リクエストとはデータ通信やデータ処理などにおける処理要求のデータのことである。
ハンドシェイク回路80は、データ遅延選択制御回路103A、データ遅延選択制御回路103B、データ遅延選択回路20A、データ遅延選択回路20B、データ遅延素子30及び同期式SRフリップフロップ81を有す。また、コアAとコアBとの電源電圧の差を変換するレベルシフタ回路82を有す。
コアAの機能部3Aは、ハンドシェイク回路80を通じて、リクエストがある旨をコアBに通知し、コアBはリクエストを受け取った旨をコアAに通知する。リクエストの有無は、コアA及びコアBで共有する同期式SRフリップフロップ81に保持され、それぞれのコアが備えるデータ遅延選択回路20A及び20Bを通じて同期的にハンドシェイク処理が行われる。
続いて、ハンドシェイクの動作について説明する。
まず、リクエストをセットする動作について説明する。
コアAの機能部3AはReq_setの信号をHighにすることで、同期式SRフリップフロップ81にリクエストをセットする(ステップBS301)。
リクエストがセットされた旨は、同期式SRフリップフロップ81の出力Doutからの信号がHighとなって出力される(ステップBS302)。
このリクエストがセットされた旨を示すDoutの値Highは、コアB側にあるデータ遅延選択回路20Bを通じてReq_Bに出力され、コアBにリクエストがある旨が通知される(ステップBS303)。
ここで、ステップBS303について詳細に説明する。
データ遅延選択制御回路103Bは、Doutの値がHighになった時、図7のクロック信号clkBの相番号0,1,3のように、この直前のクロック信号clkAの立ち上がりエッジからクロック信号clkBの立ち上がりまでTd以上ある場合は、Doutからの信号を入力するように制御する。フリップフロップ2は、Doutからの信号をクロック信号clkBの立ち上がりエッジのタイミングで入力し、Req_Bに出力する。
図7のクロック信号clkBの相番号2,4のように、直前のクロック信号clkAの立ち上がりからクロック信号clkBの立ち上がりまでがTd以下である場合は、Doutを遅延素子30によりTdlyだけ遅延させたDout_DLYからの信号を、入力するように制御する。フリップフロップ2はクロック信号clkBの立ち上がりエッジのタイミングで入力し、Req_Bに出力する。
また、図7のクロック信号clkBの相番号0のように、クロック信号clkAの立ち上がりとクロック信号clkBの立ち上がりが等しい場合には、Doutをフリップフロップ2に入力せずに、直接Req_Bに出力するように制御する。
尚、データ遅延選択制御回路103Bは、クロック信号clkAの周波数、クロック信号clkBの周波数、クロック信号clkBの相番号、及び遅延設計値Tdを参照して、上記のように制御する。これにより、メタスタビリティを回避し、かつ確定的にコアAからのリクエストをコアBに通知する。
上述のステップBS301及びBS302で説明した、リクエストがセットされた旨を示すDoutの値Highは、データ遅延選択回路20Aを通じてReq_Aに出力され、同期式SRフリップフロップ81にリクエストがセットされている旨がコアAに通知される(ステップAS303)。コアAは以前のリクエストがセットされている間は、新たなリクエストをセットすることはできない。
ここで、ステップAS303について詳細に説明する。
データ遅延選択制御回路103Aは、Doutの値がHighになった時、この直前のクロック信号clkBの立ち上がりエッジからクロック信号clkAの立ち上がりまでTd以上ある場合は、Doutからの信号を入力するように制御する。フリップフロップ1は、Doutからの信号をクロック信号clkAの立ち上がりエッジのタイミングで入力し、Req_Aに出力する。
直前のクロック信号clkBの立ち上がりからクロック信号clkAの立ち上がりまでがTd以下である場合は、Doutを遅延素子30によりTdlyだけ遅延させたDout_DLYからの信号を、入力するように制御する。フリップフロップ1はクロック信号clkAの立ち上がりエッジのタイミングで入力し、Req_Aに出力する。
クロック信号clkBの立ち上がりとクロック信号clkAの立ち上がりとが等しい場合には、Doutをフリップフロップ1に入力せずに、直接Req_Aに出力するように制御する。
尚、データ遅延選択制御回路103Aは、クロック信号clkAの周波数、クロック信号clkBの周波数、クロック信号clkAの相番号、及び遅延設計値Tdを参照して、上記ように制御する。
続いてセットされたリクエストをリセットする動作について説明する。
コアBは、リクエストを受信すると、もしくはリクエストの対象となっている処置が完了すると、クロック信号clkBの立ち上がりエッジのタイミングでReq_resetをHighにすることでクロック信号clkBの立ち上がりエッジのタイミングで、同期式SRフリップフロップ81に保持されているリクエストをリセットする(ステップAR301)。このリクエストがリセットされた旨は、同期式SRフリップフロップ81の出力Doutからの信号がLowとなって出力される(ステップAR302)。
このリクエストがセットされた旨を示すDoutの値Lowは、コアA側にあるデータ遅延選択回路20Aを通じてReq_Aに出力され、コアAにリクエストがある旨が通知される(ステップAR303)。
ここで、ステップAR303について詳細に説明する。
データ遅延選択制御回路103Aは、Doutの値がLowになった時、この直前のクロック信号clkBの立ち上がりエッジからクロック信号clkAの立ち上がりまでTd以上ある場合は、Doutからの信号を入力するように制御する。フリップフロップ1は、Doutからの信号をクロック信号clkAの立ち上がりエッジのタイミングで入力し、Req_Aに出力する。
直前のクロック信号clkBの立ち上がりからクロック信号clkAの立ち上がりまでがTd以下である場合は、Doutを遅延素子30によりTdlyだけ遅延させたDout_DLYからの信号を、入力するように制御する。フリップフロップ1はクロック信号clkAの立ち上がりエッジのタイミングで入力し、Req_Aに出力する。
クロック信号clkAの立ち上がりとクロック信号clkBの立ち上がりが等しい場合には、Doutをフリップフロップ1に入力せずに、直接Req_Aに出力するように制御する。
尚、データ遅延選択制御回路103Aは、クロック信号clkAの周波数、クロック信号clkBの周波数、クロック信号clkAの相番号、及び遅延設計値Tdlyを参照して、上記ように制御する。その結果、コアAにリクエストがリセットされた旨を通知する。コアAは新たなリクエストをセットすることができる。
上述のステップAR301及びAR302で説明した、リクエストがリセットされた旨は、コアB側のデータ遅延選択回路20Bを通じてDoutの値がReq_Bに出力され、同期式SRフリップフロップ81にリクエストがリセットされた旨がコアBに通知される(ステップBR303)。コアAは以前のリクエストがセットされている間は、新たなリクエストをセットすることはできない。
ここで、ステップBR303について詳細に説明する。
データ遅延選択制御回路103Bは、Doutの値がLowになった時、この直前のクロック信号clkAの立ち上がりエッジからクロック信号clkBの立ち上がりまでTd以上ある場合は、Doutからの信号を入力するように制御する。フリップフロップ2は、Doutからの信号をクロック信号clkBの立ち上がりエッジのタイミングで入力し、Req_Bに出力する。
直前のクロック信号clkAの立ち上がりからクロック信号clkBの立ち上がりまでがTd以下である場合は、Doutを遅延素子30によりTdlyだけ遅延させたDout_DLYからの信号を、入力するように制御する。フリップフロップ2はクロック信号clkBの立ち上がりエッジのタイミングで入力し、Req_Bに出力する。
クロック信号clkBの立ち上がりとクロック信号clkAの立ち上がりとが等しい場合には、Doutをフリップフロップ1に入力せずに、直接Req_Bに出力するように制御する。
尚、データ遅延選択制御回路103Bは、クロック信号clkAの周波数、クロック信号clkBの周波数、クロック信号clkBの相番号、及び遅延設計値Tdlyを参照して、上記のように制御する。
上述したように、本発明のハンドシェイク回路によれば、コア間で同期的にリクエストの送受信が行えるため、非同期方式で問題となるメタスタビリティを回避し、動作がサイクルレベルで確定的でかつ低レイテンシ、低スループットのコア間通信を実現することが出来る。
本実施例では、上述したハンドシェイク回路を有するバス・インターフェース回路を備えるSOC(System on a Chip)について説明する。
図9は本発明におけるSOCの構成例である。
SOCを構成する各コアのクロックはすべて、バスのクロックにあわせて位相を調整し、コア間の通信は必ずバスを介して行われる。これにより各コアの周波数範囲に差がある場合でも、コア間が直接通信する方法に比べて、少ない周波数のステップ数で任意のコア間の通信を実現することができる。また、クロック周波数及び電源電圧を変更する場合でも、位相調整回路10により動的にクロック間の位相を一定に調整するので、同期通信が可能であり、すなわち非同期方式で問題となるメタスタビリティ問題を回避し、動作がサイクルレベルで確定的で、かつ低レイテンシ、低スループットのコア間通信を実現することができる。
図10は、バス・インターフェース回路の構成例である。
バス・インターフェース回路は、リクエストFIFO(requestFIFO)2101、データFIFO(data FIFO)2102、データ遅延選択制御回路103A、及びデータ遅延選択制御回路103Bを備える。
リクエストFIFO2101は複数のハンドシェイク回路80を備え、コア(Master Core)2110からMReqに入力されるリクエストを、バス(Bus
Interconnect)2120にReqを通じて同期的に通知する。また、そのリクエストに対応する命令(Cmd)、アドレス(Addr)、及びデータ(Data)をデータFIFOよりバス2120に出力する。尚、ここでのコア(Master
Core)2110は、バスに対してリクエストを発行するコア全般を示す。
続いて、動作について説明する。
コアはバスに対するリクエストを、MReqを通じて入力する。同時にそのリクエストの命令/アドレス/データをMCmd/MAddr/MDataを通じて入力する。バス・インターフェース回路は、リクエストFIFOに空きあれば(リクエストがセットされていないハンドシェイク回路があれば)、リクエストFIFO内の空いているハンドシェイク回路のいずれかにそのリクエストをセットする。同時に、入力された命令/アドレス/データをデータFIFOに格納する。また、リクエストを受理した旨をSAckを通じてコアに通知する。一方、リクエストFIFOに空きがなく、リクエストを受理できない場合は、その旨をSAckを通じてコアに通知する。
リクエストFIFOのハンドシェイク回路にセットされたリクエストは、ハンドシェイク回路の機能により同期的にReqを通じてバスに出力される。同時にそのリクエストに対応する命令/アドレス/データがデータFIFOから取り出されて、Cmd/Addr/Dataを通じてバスに出力される。
バスは、リクエストを受理した場合は、その旨をAckを通じてバス・インターフェース回路に通知する。バス・インターフェース回路は受理されたリクエストがセットされていたハンドシェイク回路において,そのリクエストをリセットする。一方、バスがリクエストを受理できない場合は、その旨をAckを通じてバス・インターフェース回路に通知する。バス・インターフェース回路はリクエストが受理されるまで、バスへのリクエストの出力を継続する。
上述したように、本発明のバス・インターフェース回路によりコアとバスとの間で同期的にリクエストの送受信が行えるため、非同期方式で問題となるメタスタビリティ問題を回避し、動作がサイクルレベルで確定的で、かつ、低レイテンシ、低スループットのコア間通信を実現することができる。
本実施例では、上述したコア間の通信、コアとバスとの間の通信における各部の動作状況を保持する構成について説明する。尚、上述した構成と同様の構成については同一番号を付し、詳細な説明を省略する。
図11は、本発明におけるオンチップ・デバッグ回路の構成例である。
コア110は、CLK生成部111からのクロックに同期して動作する。又、他のコアとのデータ通信を、ハンドシェイク回路80及びバスを介して行う。尚、コア110は、上述したコア(Master Core)と同等である。
CLK生成部111は、ある一定の周期でバスのクロック信号の立ち上がり又は立ち下がりと一致するクロック信号を生成する。
履歴保存部112は、実際にデータを出入力(送受信)しているコア及びバスの動作状況を履歴情報として保存するものである。例えば、履歴保存部112は、コア及びバスのクロック周波数と、コア及びバスの電源電圧とが変化したタイミングと変化後の値と、コアのクロックの立ち上がりとバスのクロックの立ち上がり又はコアのクロックの立ち下がりとバスのクロックの立ち下がりが一緒になるタイミングとを履歴情報として保存する。更に、LSB(Least Significant Bit/Byte)等のバスのデータの一部やreq信号、ack信号の送受信タイミングも履歴情報として保存する。尚、履歴保存は、バスのクロックの立ち上がりまたは立ち下がりエッジのタイミングで保存する構成であっても、若しくはコアのクロックの立ち上がりまたは立ち下がりエッジのタイミングで保存する構成であっても良い。
解析部113は、履歴保存部112が保持する履歴情報に基づいて半導体装置の性能低下の原因を解析し、コア周波数、コア電源電圧、バス周波数等を制御する。例えば、履歴保存部112が保持する履歴情報からreq信号、ack信号の送受信タイミングを解析し、ack信号の送信が遅い場合はバスの周波数を上げ、req信号の送信が遅い場合はコアの周波数を上げる制御をする。
出力部114は、履歴保存部112の履歴情報を外部に出力する。外部に出力された履歴情報は、デバッグS/W(ソフトウェア)でシミュレートさせ、半導体装置の性能低下の原因を解明する。尚、この出力部は、履歴情報が所定量蓄積させてから所定量毎に送信する構成であっても、予め定められた時間に送信する構成であっても、外部から要求された際に送信する構成であっても良い。
続いて、本実施例における動作について説明する。
コア110は、他のコアとのデータ通信を、ハンドシェイク回路80及びバスを介して行う。
その一方で、履歴保存部112は各種情報を収集して履歴情報を保存する。
解析部113は、履歴情報に基づいて各種解析を行い、コア周波数、コア電源電圧、バス周波数等を制御する。
履歴保存部112は、履歴情報を外部に出力する。
上述した構成をとると、バスの動作状況を履歴情報として保存し、その履歴情報に基づいてコアの周波数等を制御しているので、半導体装置全体の性能向上が可能となる。又、実動作しているコア及びバスの動作状況を履歴保存して外部に出力しているので、次世代の半導体装置に反映させることが可能となる。
実施例2において、コアAからコアBへの通信を行なう際に、コアAとコアBのそれぞれのクロックの位相差が遅延設計値Td以下の場合にデータを通信しない方法として、位相差がTd以下の場合には、データを遅延値Tdlyだけ遅延させたデータをコアBが入力する方法を説明した。
実施例2の構成を説明する図6を参照すると、コアBがデータをTdlyだけ遅延させる遅延素子30を備える構成であるが、遅延素子30はコアAが備えてもよい。また、データを遅延させる方法として、遅延素子30を使用する代わりに、クロックの立下りでデータをラッチするフリップフロップを使用することもできる。
図14は、コアA側でクロックの立下りでデータをラッチするフリップフロップによってデータを遅延させる方法による半導体装置の構成を示す図である。図6の実施例2の構成と同様の構成要素については、同一番号を付し、詳細な説明を省略する。
図14を参照するとコアAは、フリップフロップ1の出力信号DoutをクロックclkAの立下りでラッチするフリップフロップ230を備える。すなわち、フリップフロップ230は信号DoutをクロックclkAのサイクル時間の半分だけ遅延させ、Dout_DLYとして出力する機能を有する。これは遅延値TdlyがクロックclkAのサイクル時間の半分と等しい場合の遅延素子30と同様の機能であるので、本実施例の動作は図7に示した実施例2の場合と同様になる。本実施例の構成は実施例2の構成と比較して、遅延値TdlyはクロックclkAのサイクル時間の半分に限定されるが、遅延素子の遅延値のばらつきには影響されないという利点がある。
コアAからコアBへの通信を行なう際に、コアAとコアBのそれぞれのクロックの位相差が遅延設計値Td以下の場合には、データを遅延値Tdlyだけ遅延させたデータをコアBが入力する方法の別の実施例を図15を参照して説明する。尚、上述した実施例と同様の構成については、同一番号を付し、詳細な説明を省略する。
図15は、本実施例の半導体装置の構成を示す図である。
コアAが備えるイネーブル付きフリップフロップ231及び232は、機能部3Aが出力する信号Dout0をクロックclkAに同期してラッチし、それぞれ信号Dout1、Dout2としてコアBへ出力する。ただし、信号をラッチして出力するのはそれぞれのイネーブル信号en1、en2により動作を指示された場合のみである。データ出力選択制御回路202は、クロックclkAの相番号を参照して、フリップフロップ231及び232が1サイクル毎に交互に動作するようにイネーブル信号en1及びen2を生成する。すなわち信号Dout1及びDout2には、それぞれお互いにクロックclkAで1サイクル遅延させた信号が出力されることになる。詳細には、Dout1が出力する信号よりも1サイクル遅い信号がDout2に出力され、Dout2が出力する信号よりも1サイクル遅い信号がDout1に出力される。よって、本実施例では遅延値Tdlyは常にクロックclkAのサイクル時間と等しくなる。
一方、コアB側の構成は、実施例6におけるコアBの構成のデータ遅延選択制御回路103をデータ入力選択制御回路201に置き換えた以外は、実施例6におけるコアBの構成と同様の構成である。データ入力選択制御回路201の機能はデータ遅延選択制御回路103の機能と同様であるが、実施例6及び実施例2では信号Doutに対して常に信号Dout_DLYに遅延した信号が出力されるのに対して、本実施例の構成では信号Dout1またはDout2に交互に遅延した信号が出力されるので、それに対応した制御がなされる。
次に、図16を参照して本実施例の動作の詳細を説明する。
図16は、本実施例の動作を説明するためのタイミングチャートである。尚、本実施例では、基準周波数をfとして、クロック信号clkAの周波数が8f、クロック信号clkBの周波数が5fとした場合の動作を説明する。
図中のクロック信号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サイクル毎に位相関係が一巡することになる。すなわち、データ出力選択制御回路202及びデータ入力選択制御回路201は、クロック信号clkAの8サイクル内及びクロック信号clkBの5サイクル内の位相関係を考慮してデータの通信制御を行うことになる。
Dout0はコアAの機能部3Aが出力する信号である。
en1、en2はそれぞれフリップフロック231及び232のイネーブル信号であり、データ出力選択制御回路202が出力する。Dout1はフリップフロップ231からの出力データであり、Dout2はフリップフロップ232からの出力データである。Dselは、データ入力選択制御回路201からの制御信号である。Dinは、フリップフロップ2が出力するデータである。
図16に示すように、フリップフロップ231のイネーブル信号en1は、フリップフロップ231が1サイクル毎に動作するように、1サイクル毎にHighとLowを交互に繰り返す信号である。同様に、フリップフロップ232のイネーブル信号en2は、フリップフロップ232が1サイクル毎に動作するように、1サイクル毎にHighとLowを交互に繰り返す信号であるが、フリップフロップ232がフリップフロップ231と交互に動作するように、en1とは位相が反対である。
図16に示すように、クロック信号clkAの相番号3の立ち上がりエッジからクロック信号clkBの相番号2の立ち上がりエッジ、及びクロック信号clkAの相番号6の立ち上がりエッジからクロック信号clkBの相番号4の立ち上がりエッジへの位相差がTd以下となる。このことは、クロック信号clkA及びクロック信号clkBの周波数とクロック信号clkBの相番号とからわかるので、このときデータ入力選択制御回路201は、clkAの相番号3の立ち上がりエッジのタイミングでフリップフロップ232が出力するDout2よりもクロックclkAの1サイクル遅延したDout1をフリップフロップ2が入力するデータとして選択する。同様に、相番号6の立ち上がりエッジのタイミングでフリップフロップ231が出力するDout1よりもクロックclkAの1サイクル遅延したDout2をフリップフロップ2が入力するデータとして選択する。それ以外の場合には、フリップフロップ2がDout1またはDout2のうち遅延していない方のデータを入力するように選択する。Dout1またはDout2のいずれが遅延していていずれが遅延いていないかは、データ入力選択制御回路201が入力するclkA、clkBの周波数情報、及びclkBの相番号から判断することができる。
次に、Dout1またはDout2のいずれかを選択する信号Dselの詳細を説明する。まず、クロック信号clkAの相番号1の立ち上がりエッジのタイミングでフリップフロップ232がDout2に出力したデータを、クロック信号clkBの相番号1の立ち上がりエッジのタイミングでフリップフロップ2がDout2から受信するように、データ入力選択制御回路201はクロック信号clkBの相番号1の立ち上がりエッジのタイミングでは、DselにHighを出力する。
次に、データ入力選択制御回路201は、クロック信号clkAの相番号3の立ち上がりエッジのタイミングでフリップフロップ232が出力したデータDout2ではなく、clkAの相番号2のタイミングでフリップフロップ231が出力したデータDout1を受信するように、クロック信号clkBの相番号2の立ち上がりエッジのタイミングでは、制御信号DselをLowにする。
次に、クロック信号clkAの相番号4の立ち上がりエッジのタイミングでフリップフロップ231が出力したデータDout1を入力するように、クロック信号clkBの相番号3の立ち上がりエッジのタイミングでは、制御信号DselをLowにする。
次に、クロック信号clkAの相番号6の立ち上がりエッジのタイミングでフリップフロップ231が出力したデータDout1ではなく、clkAの相番号5のタイミングでフリップフロップ232が出力したデータDout2を入力するように、クロック信号clkBの相番号4の立ち上がりエッジのタイミングでは、制御信号DselをHighにする。
次に、クロック信号clkAの相番号7の立ち上がりエッジのタイミングでフリップフロップ232が出力したデータDout2を入力するように、クロック信号clkBの相番号0の立ち上がりエッジのタイミングでは、制御信号DselをHighにする。
以上により、非同期方式で問題となるメタスタビリティ問題を回避し、動作がサイクルレベルで確定的で、かつ低レイテンシ、低スループットのコア間通信を実現することができる。
また、本実施例によれば、データDout1及びDout2はクロックclkAの2サイクル毎に変化し、2サイクルの間はデータが安定しているため、実施例2や実施例6のデータDout及びDout_DLYがクロックclkAの1サイクル毎に変化するのに比べてタイミングに余裕があるので、特にフリップフロップ2のホールド制約に関して、タイミング設計が容易になるという効果がある。
上述した本実施例はコアAにおいて2つのフリップフロップ231及び232を交互に動作させる構成であるが、フリップフロップの数は2つに限らず、3つ以上であっても良い。その場合、データ出力選択制御回路は、それぞれにフリップフロップを順々に同時には1つのフリップフロップのみが動作するように、各フリップフロップのイネーブル信号を生成する。フリップフロップが3つの場合の構成例を図17に示す。
フリップフロップ231、232に加えて信号Dout3を出力する3つ目のフリップフロップ233を備える。データ出力選択制御回路204は、それぞれの3つのフリップフロップのイネーブル信号en1,en2,en3を出力し、3つのフリップフロップが順々に動作するように制御する。データ入力選択制御回路203は、3つの信号Dout1,
Dout2,Dout3のいずれか一つをフリップフロップが2つの場合と同様に適切に選択する。この場合データDout1,Dout2及びDout3はクロックclkAの3サイクル毎に変化し、3サイクルの間はデータが安定しているため、さらにタイミング設計が容易になるという効果がある。
上述した実施例において、クロックclkAとclkBはある一定周期(相番号0)において立ち上がり又は立ち下さりが一致するクロックであったが、クロックclkAとclkBが相番号0において立ち上がり又は立ち下さりが一致する(すなわち位相差が0)クロックではなくて、ある一定値Tphになるようなクロックであったとしても、上述した各実施例と同様の方法でコア間通信を実現することが可能である。この場合、クロックclkA及びclkBの各エッジ間の位相差は、相番号0の時の位相差が0のときに比べてTphだけずれた位相差になる。
例えば、図18に示すように、相番号0のときにclkAにくらべてclkBがTphだけ遅くなる場合には、その他の相番号のエッジ間の位相差は、相番号0の時の位相差が0の場合に比べて、Tphだけ大きくなる。データ遅延選択制御回路やデータ入力選択制御回路はそれを考慮してコア間の通信制御を行なうことで、上述した実施例と同様にコア間通信を実現することができる。
実施例7及び図15に示した構成を、相番号0の時の位相差が0ではなくTphであっても動作するように変更した構成を図19に示す。図15の構成との違いは、データ入力選択制御回路201をデータ入力選択制御回路205に置き換えている。データ入力選択制御回路205は、位相差Tphを入力することで、位相差Tphを考慮した制御が可能である。また、相番号0の時に位相差を0にするように調整する必要がないので、位相調整回路10を省略している。すなわち、本構成によれば、位相を調整するのに必要な回路の面積や電力を削減することができるという効果がある。
上述した実施例において、遅延設計値Tdは設計時に決定する定数であるとして説明したが、回路動作時に変更可能な変数であってもよい。
その場合、データ遅延選択制御回路やデータ入力選択制御回路はTdの値を動作時に考慮してコア間の通信制御を行なうことで、上述した実施例と同様にコア間通信を実現することができる。
実施例7及び図15に示した構成を、動作時にTdが変更可能なように変更した構成を図20に示す。図15の構成との違いは、データ入力選択制御回路201をデータ入力選択制御回路206に置き換えたのみである。データ入力選択制御回路206は、遅延設計値Tdを入力することで、動作時のTdの変更に追従した制御が可能である。すなわち、本構成によれば、クロックclkAやclkBのジッタの大きさやclkAとclkB間のスキューの大きさに応じて、遅延設計値Tdを適応的に柔軟に設定できる為、過剰なタイミング余裕を削減することができ、結果としてコア間通信の信頼性を確保しつつ、通信の性能を向上することができるという効果がある。
図1は、本発明における実施例1の構成例である。 図2は、タイミングチャートである。 図3は、Td及びTdlyを説明するための図である。 図4は、本発明の実施例1の動作を説明するためのタイミングチャートである。 図5は、本発明の実施例1の動作を説明するためのタイミングチャートである。 図6は、本発明の実施例2の構成例である。 図7は、本発明の実施例2の動作を説明するためのタイミングチャートである。 図8は、本発明の実施例3の構成例である。 図9は、本発明の実施例4を説明するためのブロック図である。 図10は、本発明の実施例4のバス・インターフェースの構成例である。 図11は、本発明の実施例5のオンチップ・デバッグ回路の構成例である。 図12は、従来の同期式回路の構成図である。 図13は、従来の非同期式回路の構成図である。 本発明の実施例6の構成を示す図である。 本発明の実施例7の構成を示す図である。 本発明の実施例7の動作を示すタイミングチャートである。 本発明の実施例7の第2の構成を示す図である。 本発明の実施例8の動作を説明するタイミングチャートである。 本発明の実施例8の構成を示す図である。 本発明の実施例9の構成を示す図である。
符号の説明
1 コアAのフリップフロップ
2 コアBのフリップフロップ
10 位相調整回路
80 ハンドシェイク回路
81 同期式SRフリップフロップ
82 レベルシフタ
101 データ出力制御回路
102 データ入力制御回路
103 データ選択制御回路
111 CLK生成部
112 履歴保存部
113 解析部
810 レベルシフタ

Claims (26)

  1. 半導体装置であって、
    第1のクロック信号に基づいてデータを出力する第1の信号処理回路と、
    ある一定の周期で第1のクロック信号の立ち上がり又は立ち下がりと一致する第2のクロック信号に基づいてデータ入力する第2の信号処理回路と、
    前記第1のクロック信号及び前記第2のクロック信号に関する情報に基づいて、前記第2のクロック信号のセットアップ時間より前に前記第2の信号処理回路に到着するデータのみを出力するように前記第1の信号処理回路を制御する第1の制御信号を生成して、この生成した第1の制御信号を前記第1のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる、又は前記セットアップ時間より前に到着するデータのみを入力するように前記第2の信号処理回路を制御する第2の制御信号を生成して、この生成した第2の制御信号を前記第2のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる制御回路と
    を有することを特徴とする半導体装置。
  2. 半導体装置であって、
    第1のクロック信号に基づいてデータを出力する第1の信号処理回路と、
    ある一定の周期で第1のクロック信号の立ち上がり又は立ち下がりとの位相差がある一定値になる第2のクロック信号に基づいてデータ入力する第2の信号処理回路と、
    前記第1のクロック信号及び前記第2のクロック信号に関する情報に基づいて、前記第2のクロック信号のセットアップ時間より前に前記第2の信号処理回路に到着するデータのみを出力するように前記第1の信号処理回路を制御する第1の制御信号を生成し、この生成した第1の制御信号を前記第1のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる、又は前記セットアップ時間より前に到着するデータのみを入力するように前記第2の信号処理回路を制御する第2の制御信号を生成し、この生成した第2の制御信号を前記第2のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる制御回路と
    を有することを特徴とする半導体装置。
  3. 前記制御回路は、前記第1のクロック信号に同期して複数のデータを入力された順に、ある一定の周期に予め定められた数のデータを出力するように制御する前記第1の制御信号を生成する出力制御回路であることを特徴とする請求項1又は請求項2に記載の半導体装置。
  4. 前記制御回路は、複数のデータの中から前記セットアップ時間より前に到着するデータを選択して入力するように制御する前記第2の制御信号を生成する入力制御回路であることを特徴とする請求項1又は請求項2に記載の半導体装置。
  5. 前記制御回路は、前記セットアップ時間より前に到着しないデータを出力しないように前記第1の信号処理回路を制御する前記第1の制御信号を生成する出力制御回路であることを特徴とする請求項1又は請求項2に記載の半導体装置。
  6. 前記制御回路は、前記セットアップ時間より前に到着しないデータを入力しないように前記第2の信号処理回路を制御する前記第2の制御信号を生成する入力制御回路であることを特徴とする請求項1又は請求項2に記載の半導体装置。
  7. 前記制御回路は、前記セットアップ時間より前に到着しないデータは、データを一定時間だけ遅延させる遅延部で遅延させたデータを入力するように制御する前記第2の制御信号を生成する遅延選択制御回路であることを特徴とする請求項1又は請求項2に記載の半導体装置。
  8. 前記遅延部は、前記セットアップより前に到着しないデータを前記第2のクロック信号の1クロック分遅延させることを特徴とする請求項7に記載の半導体装置。
  9. 前記データは、前記第1のクロックに同期して所定の動作を行う第1の機能部から出力される、処理要求を示す処理要求データ、若しくは処理要求データを受信したことを示す処理要求リセットデータであることを特徴とする請求項1から請求項8のいずれかに記載の半導体装置。
  10. 前記処理要求データ及び前記処理要求リセットデータは、前記第1の機能部と、前記第2のクロックに同期して所定の動作を行う第2の機能部との間で送受信されるデータであることを特徴とする請求項9に記載の半導体装置。
  11. 前記処理要求データ及び前記処理要求リセットデータは、前記第1の機能部と、バスとの間で送受信されるデータであることを特徴とする請求項9に記載の半導体装置。
  12. 前記半導体装置は、前記データの送受信中の動作状況を履歴情報として保持する履歴保存手段を有することを特徴とする請求項1から請求項11のいずれかに記載の半導体装置。
  13. 前記半導体装置は、
    前記履歴保存手段が保持する履歴情報に基づいて、半導体装置の性能低下の原因を解析する解析手段を有することを特徴とする請求項12に記載の半導体装置。
  14. 前記履歴保存手段は、前記履歴情報を外部に出力する出力手段を有することを特徴とする請求項12又は請求項13に記載の半導体装置。
  15. 前記セットアップ時間を、動作時に動的に変更することを特徴とする請求項1から請求項14に記載の半導体装置。
  16. 前記第1の信号処理回路は、前記第1のクロック信号の異なるサイクルでデータを出力する複数のフリップフロップを有し、
    前記制御回路は、前記複数のフリップフロップの出力の中から前記セットアップ時間より前に到着する出力を、前記第2の信号処理回路が選択して入力するように、前記第2の制御信号によって制御することを特徴とする請求項1又は請求項2に記載の半導体装置。
  17. 半導体装置の通信制御方法であって、
    第1のクロック信号に基づいてデータを出力する第1の信号処理ステップと、
    ある一定の周期で第1のクロック信号の立ち上がり又は立ち下がりと一致する第2のクロック信号に基づいてデータ入力する第2の信号処理ステップと、
    前記第1のクロック信号及び前記第2のクロック信号に関する情報に基づいて、前記第2のクロック信号のセットアップ時間より前に前記第2の信号処理回路に到着するデータのみを出力するように前記第1の信号処理回路を制御する第1の制御信号を生成して、この生成した第1の制御信号を前記第1のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる又は前記セットアップ時間より前に到着するデータのみを入力するように前記第2の信号処理回路を制御する第2の制御信号を生成して、この生成した第2の制御信号を前記第2のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる制御ステップと
    を有する
    ことを特徴とする通信制御方法。
  18. 半導体装置の通信制御方法であって、
    第1のクロック信号に基づいてデータを出力する第1の信号処理ステップと、
    ある一定の周期で第1のクロック信号の立ち上がり又は立ち下がりとの位相差がある一定値になる第2のクロック信号に基づいてデータ入力する第2の信号処理ステップと、
    前記第1のクロック信号及び前記第2のクロック信号に関する情報に基づいて、前記第2のクロック信号のセットアップ時間より前に前記第2の信号処理回路に到着するデータのみを出力するように前記第1の信号処理回路を制御する第1の制御信号を生成し、この生成した第1の制御信号を前記第1のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる、又は前記セットアップ時間より前に到着するデータのみを入力するように前記第2の信号処理回路を制御する第2の制御信号を生成し、この生成した第2の制御信号を前記第2のクロック信号の立ち上がり又は立ち下がりのタイミングによって変化させる制御ステップと
    を有する
    ことを特徴とする通信制御方法。
  19. 前記制御ステップは、前記第1のクロック信号に同期して複数のデータを入力された順に、ある一定の周期に予め定められた数のデータを出力するように制御する前記第1の制御信号を生成することを特徴とする請求項17又は請求項18に記載の通信制御方法。
  20. 前記制御ステップは、複数のデータの中から前記セットアップ時間より前に到着するデータを選択して入力するように制御する前記第2の制御信号を生成することを特徴とする請求項17又は請求項18に記載の通信制御方法。
  21. 前記制御ステップは、前記セットアップ時間より前に到着しないデータを出力しないように制御する前記第1の制御信号を生成することを特徴とする請求項17又は請求項18に記載の通信制御方法。
  22. 前記制御ステップは、前記セットアップ時間より前に到着しないデータを入力しないように制御する前記第2の制御信号を生成することを特徴とする請求項17又は請求項18に記載の通信制御方法。
  23. 前記制御ステップは、前記セットアップ時間より前に到着しないデータは、データを一定時間だけ遅延させる遅延部で遅延させたデータを入力するように制御する前記第2の制御信号を生成することを特徴とする請求項17又は請求項18のいずれかに記載の通信制御方法。
  24. 前記制御ステップは、前記セットアップ時間より前に到着しないデータを前記遅延部で前記第2のクロック信号の1遅延させることを特徴とする請求項23に記載の通信制御方法。
  25. 前記制御ステップは、前記セットアップ時間を、動作時に動的に変更することを特徴とする請求項17から請求項20のいずれかに記載の通信制御方法。
  26. 前記制御ステップは、前記第1のクロック信号の異なるサイクルで出力されるデータの中から前記セットアップ時間より前に到着する出力を選択して入力するように、前記第2の制御信号によって制御することを特徴とする請求項17又は請求項18に記載の通信制御方法。
JP2006535225A 2004-09-16 2005-09-16 半導体装置、及び通信制御方法 Active JP4998699B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006535225A JP4998699B2 (ja) 2004-09-16 2005-09-16 半導体装置、及び通信制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2004270435 2004-09-16
JP2004270435 2004-09-16
PCT/JP2005/017165 WO2006030904A1 (ja) 2004-09-16 2005-09-16 半導体装置、及び通信制御方法
JP2006535225A JP4998699B2 (ja) 2004-09-16 2005-09-16 半導体装置、及び通信制御方法

Publications (2)

Publication Number Publication Date
JPWO2006030904A1 JPWO2006030904A1 (ja) 2008-07-31
JP4998699B2 true JP4998699B2 (ja) 2012-08-15

Family

ID=36060151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006535225A Active JP4998699B2 (ja) 2004-09-16 2005-09-16 半導体装置、及び通信制御方法

Country Status (3)

Country Link
US (1) US7702945B2 (ja)
JP (1) JP4998699B2 (ja)
WO (1) WO2006030904A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010010745A1 (ja) * 2008-07-23 2010-01-28 日本電気株式会社 半導体装置及び通信方法
JP5315882B2 (ja) * 2008-09-18 2013-10-16 日本電気株式会社 半導体装置及び通信方法
US8041981B2 (en) * 2008-09-25 2011-10-18 Apple Inc. Synchronizing timing domains based on state variables
JP5378765B2 (ja) * 2008-11-25 2013-12-25 ラピスセミコンダクタ株式会社 データ転送システム
US8751854B2 (en) 2009-12-21 2014-06-10 Empire Technology Development Llc Processor core clock rate selection
EP2662745A4 (en) 2011-07-06 2015-01-14 Mitsubishi Electric Corp SIGNAL PROCESSING DEVICE
JP6025370B2 (ja) * 2012-04-10 2016-11-16 キヤノン株式会社 位相制御装置
US9429981B2 (en) * 2013-03-05 2016-08-30 St-Ericsson Sa CPU current ripple and OCV effect mitigation
US9971397B2 (en) 2014-10-08 2018-05-15 Apple Inc. Methods and apparatus for managing power with an inter-processor communication link between independently operable processors
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10191852B2 (en) 2016-02-29 2019-01-29 Apple Inc. Methods and apparatus for locking at least a portion of a shared memory resource
KR102162321B1 (ko) * 2016-03-14 2020-10-06 한국전자통신연구원 프로세서 시스템 및 그것의 고장 검출 방법
US10191859B2 (en) 2016-03-31 2019-01-29 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10838450B2 (en) * 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
KR20210045009A (ko) * 2019-10-16 2021-04-26 삼성전자주식회사 인터페이싱 장치, 인터페이싱 장치를 포함하는 반도체 장치 및 반도체 장치의 통신 방법
US11989148B2 (en) 2020-12-30 2024-05-21 Stmicroelectronics International N.V. Data bridge for interfacing source synchronous datapaths with unknown clock phases
CN117313614A (zh) * 2023-09-19 2023-12-29 武汉泰朴半导体有限公司 一种数据传输更新模块和数据传输更新方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07306827A (ja) * 1994-05-10 1995-11-21 Intel Corp P/q整数比関係を有する周波数で動作するディジタル装置間で同期データ伝送を行うための方法および装置
JP2001077797A (ja) * 1999-07-19 2001-03-23 Thomson Licensing Sa インタフェース装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0645880A (ja) 1992-07-23 1994-02-18 Nec Ic Microcomput Syst Ltd ディレイ型フリップフロップ回路
JP2003273847A (ja) 2002-03-18 2003-09-26 Seiko Epson Corp ディジタル信号処理回路及びそれを用いた半導体装置、並びに半導体装置の設計方法
US7089443B2 (en) * 2003-01-23 2006-08-08 University Of Rochester Multiple clock domain microprocessor
US7412678B2 (en) * 2004-06-02 2008-08-12 Lsi Corporation Method and computer program for management of synchronous and asynchronous clock domain crossing in integrated circuit design

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07306827A (ja) * 1994-05-10 1995-11-21 Intel Corp P/q整数比関係を有する周波数で動作するディジタル装置間で同期データ伝送を行うための方法および装置
JP2001077797A (ja) * 1999-07-19 2001-03-23 Thomson Licensing Sa インタフェース装置

Also Published As

Publication number Publication date
US7702945B2 (en) 2010-04-20
JPWO2006030904A1 (ja) 2008-07-31
US20080218225A1 (en) 2008-09-11
WO2006030904A1 (ja) 2006-03-23

Similar Documents

Publication Publication Date Title
JP4998699B2 (ja) 半導体装置、及び通信制御方法
JP5537568B2 (ja) 信号受信回路、メモリコントローラ、プロセッサ、コンピュータ及び位相制御方法
JP3856696B2 (ja) 2倍データ速度同期式動的ランダムアクセスメモリのための構成可能同期装置
US7555590B2 (en) Fast buffer pointer across clock domains
JP4930593B2 (ja) データ転送装置およびデータ転送方法
JP2002539525A (ja) 弾性インターフェース装置およびそのための方法
JP2006013990A (ja) 遅延制御装置
US6504790B1 (en) Configurable DDR write-channel phase advance and delay capability
JP4517891B2 (ja) シリアル/パラレル変換回路及びパラレル/シリアル変換回路
KR20150080060A (ko) 스큐를 보정하는 리시버 회로, 이를 포함하는 반도체 장치 및 시스템
JP2008091006A (ja) 半導体メモリ装置及びその駆動方法
JP5005928B2 (ja) インタフェース回路及びそのインタフェース回路を備えた記憶制御装置
JP6575390B2 (ja) パラレル・シリアル変換回路、情報処理装置、およびタイミング調整方法
JP2011061350A (ja) 受信装置及びその受信方法
US8395946B2 (en) Data access apparatus and associated method for accessing data using internally generated clocks
US20150113236A1 (en) Memory controller
WO2013081936A1 (en) System and method of data communications between electronic devices
US20140325253A1 (en) Timing control circuit
US7966468B1 (en) Apparatus, system, and method for fast read request transfer through clock domains
US20060187729A1 (en) Source synchronous communication channel interface receive logic
US7154809B2 (en) Method for measuring the delay time of a signal line
KR102422583B1 (ko) 레이턴시 제어 장치 및 이를 포함하는 반도체 장치
JP5413367B2 (ja) 半導体装置及び通信方法
JP2005109955A (ja) 非同期通信回路
JP5315882B2 (ja) 半導体装置及び通信方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101006

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110928

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120418

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120501

R150 Certificate of patent or registration of utility model

Ref document number: 4998699

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150525

Year of fee payment: 3