CN112860216A - 时钟交叉fifo状态收敛同步器 - Google Patents

时钟交叉fifo状态收敛同步器 Download PDF

Info

Publication number
CN112860216A
CN112860216A CN202010999677.6A CN202010999677A CN112860216A CN 112860216 A CN112860216 A CN 112860216A CN 202010999677 A CN202010999677 A CN 202010999677A CN 112860216 A CN112860216 A CN 112860216A
Authority
CN
China
Prior art keywords
flip
pointers
pipeline
flops
fifo
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010999677.6A
Other languages
English (en)
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN112860216A publication Critical patent/CN112860216A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/027Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
    • H03K3/037Bistable circuits
    • H03K3/0377Bistables with hysteresis, e.g. Schmitt trigger
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/353Generators characterised by the type of circuit or by the means used for producing pulses by the use, as active elements, of field-effect transistors with internal or external positive feedback
    • H03K3/356Bistable circuits
    • H03K3/3565Bistables with hysteresis, e.g. Schmitt trigger
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K23/00Pulse counters comprising counting chains; Frequency dividers comprising counting chains
    • H03K23/004Counters counting in a non-natural counting order, e.g. random counters
    • H03K23/005Counters counting in a non-natural counting order, e.g. random counters using minimum change code, e.g. Gray Code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K23/00Pulse counters comprising counting chains; Frequency dividers comprising counting chains
    • H03K23/40Gating or clocking signals applied to all stages, i.e. synchronous counters
    • H03K23/50Gating or clocking signals applied to all stages, i.e. synchronous counters using bi-stable regenerative trigger circuits
    • H03K23/54Ring counters, i.e. feedback shift register counters
    • H03K23/542Ring counters, i.e. feedback shift register counters with crossed-couplings, i.e. Johnson counters
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本公开涉及时钟交叉FIFO状态收敛同步器。同步器可以在单个步骤中生成流水线(例如,FIFO、LIFO)状态而无需中间同步。状态可以指示流水线是满、空、几乎满还是几乎空。同步器(也称为双同步或基于波纹的流水线状态同步器)可以与任何类型的时钟交叉流水线和所有类型的指针编码一起使用。双同步和基于波纹的流水线状态同步器消除了昂贵的验证和半手动定时闭合,建议更好的性能和可测试性,并且具有更小的面积和功耗。

Description

时钟交叉FIFO状态收敛同步器
优先权声明
本申请要求于2019年11月26日提交的、序列号为62/940,729、题为“时钟交叉FIFO状态收敛同步器(Clock Crossing FIFO Status Converged Synchronizer)”的美国临时专利申请的优先权,其全部内容通过引用合并于此。
技术领域
本公开总体涉及时钟交叉FIFO状态收敛同步器。
背景技术
当前,时钟交叉先进先出(FIFO,First-in-First-out)无法有效地直接生成FIFO的收敛的满、空、几乎满和/或几乎空状态。
发明内容
根据本公开实施例的第一方面,提供了一种装置,包括:流水线;第一指针集,与所述流水线相关联,其中,所述第一指针集与用于从所述流水线读取的读时钟相关联;第二指针集,与所述流水线相关联,其中,所述第二指针集与用于向所述流水线写入的写时钟相关联;比较器,用于将所述第一指针集与所述第二指针集进行比较;逻辑,耦合到所述比较器的输出,其中,所述逻辑用于执行与运算;滤波器,耦合到所述逻辑的输出;施密特触发器,耦合到所述滤波器;以及至少两个触发器,耦合到所述施密特触发器,其中,所述至少两个触发器中的一者的输出指示所述流水线的状态。
根据本公开实施例的第二方面,提供了一种装置,包括:流水线;比较器,用于将第一指针集与第二指针集进行比较,其中,所述第一指针集与所述流水线相关联以从所述流水线读取,其中,所述第二指针集与所述流水线相关联以向所述流水线写入;逻辑,耦合到所述比较器的输出,其中,所述逻辑用于对所述输出执行与运算;以及流水线状态同步器,耦合到所述逻辑,其中,所述流水线状态同步器用于提供所述流水线是满、空、几乎满还是几乎空的指示符。
根据本公开实施例的第三方面,提供了一种系统,包括:存储器;处理器,耦合到所述存储器;以及无线接口,允许所述处理器与另一设备通信,其中,所述处理器包括根据第一方面描述的装置。
根据本公开实施例的第四方面,提供了一种系统,包括:存储器;处理器,耦合到所述存储器;以及无线接口,允许所述处理器与另一设备通信,其中,所述处理器包括根据第二方面描述的装置。
根据本公开实施例的第五方面,提供了一种方法,包括:通过比较器将第一指针集与第二指针集进行比较,其中,所述第一指针集与流水线相关联,其中,所述第一指针集与用于从所述流水线读取的读时钟相关联,其中,所述第二指针集与所述流水线相关联,其中,所述第二指针集与用于向所述流水线写入的写时钟相关联;通过逻辑对所述比较器的输出执行与运算;将滤波器耦合到所述逻辑的输出;将施密特触发器耦合到所述滤波器;以及将至少两个触发器耦合到所述施密特触发器,其中,所述至少两个触发器中的一者的输出指示所述流水线的状态。
附图说明
从以下给出的详细描述和本公开的各个实施例的附图,将更全面地理解本公开的实施例,然而,不应将其视为将本公开限制为特定的实施例,而仅是为了解释和理解。
图1示出了先进先出(FIFO)状态生成器。
图2A示出了根据一些实施例的用于FIFO满状态生成的装置。
图2B示出了根据一些实施例的用于FIFO空状态生成的装置。
图3示出了根据一些实施例的示出性能比较的曲线图。
图4示出了根据一些实施例的示出面积比较的曲线图。
图5示出了根据一些实施例的示出功率比较的曲线图。
图6A示出了根据一些实施例的用于FIFO满状态生成的装置。
图6B示出了根据一些实施例的用于FIFO空状态生成的装置。
图7示出了根据一些实施例的用于FIFO几乎满状态生成的装置。
图8示出了根据一些实施例的用于FIFO几乎空状态生成的装置。
图9示出了根据一些实施例的用于FIFO几乎满状态生成的装置。
图10示出了根据一些实施例的用于FIFO几乎空状态生成的装置。
图11A示出了根据一些实施例的用于使用两个施密特触发缓冲器的FIFO满状态生成的装置。
图11B示出了根据一些实施例的用于使用两个施密特触发缓冲器的FIFO空状态生成的装置。
图12示出了根据一些实施例的具有时钟交叉FIFO状态收敛同步器的智能设备或计算机系统或SoC(片上系统)。
具体实施方式
一种直接生成时钟交叉先进先出(FIFO)收敛满/空状态的方法是将格雷编码、约翰逊环编码或其他编码与每位同步器(per-bit synchronizer)一起使用。在这种情况下,读指针被同步到写时钟域并且然后与写时钟域中的写指针进行比较以生成“满”状态,并且写指针被同步到读时钟域并且然后与读时针域中的读时针进行比较以生成“空”状态。为了保证代码一致性,限制每个同步位传播时间(通常通过延迟控制半手动地完成)。然而,该方法不足以克服直接生成时钟交叉FIFO收敛满/空状态的问题。
例如,该方法使用浪费面积和功率(泄漏和动态两者)的大量同步器来生成FIFO状态。使用用于FIFO的约翰逊环编码所需的同步器数量至少是FIFO深度的两倍。用于FIFO的约翰逊环编码通常出现在浅的非二次幂(non-power-of-two)的FIFO中。约翰逊FIFO可能明显更快,但需要权衡更高的功率和更大的面积。
将格雷编码用于FIFO需要两倍log2(FIFO深度)个同步器。然而,将格雷编码用于其他深度的FIFO可能非常困难。
无论是约翰逊编码、格雷编码还是其他编码,该方法中的FIFO状态都不是由触发器(flip-flop)直接驱动的,而是具有组合逻辑,这对性能和知识产权(IP)集成设置了限制。为最大延迟定时约束适当的源-目的地对以保证同步代码一致性是一个挑战。此外,多个异步源-目的地路径通常无法被快速扫描很好地覆盖,这增加了坏的硅漏出到客户的风险。这样,使用格雷编码、约翰逊环编码或类似编码与每位同步器来生成时钟交叉FIFO的满和/或空状态的方法面临许多挑战。
一些实施例描述了可以在单个步骤中生成FIFO状态而无需中间同步的同步器。状态可以是FIFO是满、空、几乎满或几乎空的指示符。根据一些实施例,同步器(也称为双同步或基于波纹的FIFO状态同步器)可以与任何类型的时钟交叉FIFO和所有类型的指针编码一起使用。各种实施例的FIFO状态同步器解决了两种FIFO的已知限制。它也适用于其他可用于FIFO指针的代码。
在一些实施例中,同步器包括:FIFO;与FIFO相关联的第一指针集,其中,第一指针集与用于从FIFO读取的读时钟相关联;以及与FITO相关联的第二指针集,其中,第二指针集与用于向FIFO写入的写时钟相关联。在一些实施例中,同步器包括比较器(例如,XNOR门),用于将第一指针集与第二指针集进行比较。在一些实施例中,同步器包括耦合到比较器的输出的AND逻辑。在一些实施例中,滤波器(例如,RC滤波器)耦合到AND逻辑的输出。在一些实施例中,施密特触发器(Schmitt trigger)耦合到滤波器。在一些实施例中,同步器包括耦合到施密特触发器的至少两个触发器,其中,至少两个触发器中的一者的输出指示FIFO的状态。在一些实施例中,施密特触发器的输出用于设置或复位至少两个触发器的输出。在一些实施例中,至少两个触发器的时钟端子耦合到读时钟以指示FIFO的空状态。在一些实施例中,至少两个触发器的时钟端子耦合到写时钟以指示FIFO的满状态。在一些实施例中,第一指针集和第二指针集是约翰逊编码指针。在一些实施例中,第一指针集和第二指针集是格雷编码指针。在一些实施例中,至少两个触发器中的第一触发器的输入耦合到接地或电源,并且其中至少两个触发器中的第一触发器的输出耦合到至少两个触发器中的第二触发器的输入。
存在各种实施例的许多技术效果。例如,一些实施例的双同步和基于纹波的FIFO状态同步器都消除了昂贵的验证和半手动定时闭合(timing closure),建议更好的性能和可测试性,并且具有更小的面积和功率。在一种情况下,双同步或基于波纹的FIFO状态同步器更快,例如,与使用格雷编码或约翰逊环编码的时钟交叉FIFO相比快20%至35%。双同步或基于纹波的FIFO状态同步器使用更小的面积,例如,与使用格雷编码或约翰逊环编码的时钟交叉FIFO相比,面积减小30%至65%。双同步或基于纹波的FIFO状态同步器可节省功耗,例如,节省23%至68%的功耗。从各种附图和实施例中,其他技术效果将显而易见。
在以下描述中,讨论了许多细节,以提供对本公开的实施例的更透彻的解释。然而,对于本领域技术人员将明显的是,可以在没有这些具体细节的情况下实施本公开的实施例。在其他情形下,公知的结构和设备以框图形式示出而不是详细描述,以避免模糊本公开的实施例。要注意,在实施例的相应附图中,信号用线表示。一些线可以更粗以指示更多的组成信号路径,和/或在一端或多端具有箭头以指示主要信息流方向。这些指示不是意在进行限制。相反,这些线是与一个或多个示例性实施例结合用来促进更容易地理解电路或逻辑单元。如由设计需要和偏好所规定的,任何所表示的信号实际上可以包括可以沿任一方向行进的一个或多个信号并且可采用任何适当类型的信号方案来实现。
在整个说明书中和权利要求书中,术语“经连接(connected)”指连接的事物之间的直接连接(例如,电气、机械、或磁性连接),而没有任何中间设备。
术语“耦合”是指直接连接或间接连接,诸如连接的事物之间的直接的电气、机械、或磁性连接或者通过一个或多个无源或有源中间设备的间接连接。
术语“相邻”在这里通常是指事物在另一事物附近(例如,紧接在它们之间的一个或多个事物附近或与其紧邻)或与其相邻(例如,与其邻接)的位置。
术语“电路”或“模块”可以指被布置为彼此合作以提供期望功能的一个或多个无源和/或有源组件。
术语“信号”可以指至少一个电流信号、电压信号、磁信号或数据/时钟信号。“一(a)”、“一个(an)”和“该(the)”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。
术语“缩放”通常是指将设计(示意图和布局)从一种工艺技术转换为另一种工艺技术,并随后减小布局面积。术语“缩放”通常还指缩小同一技术节点内的布局和器件的尺寸。术语“缩放”还可以指相对于另一参数(例如,电源点评)调整(例如,减速或加速,即分别缩小或放大)信号频率。术语“基本上”、“接近”、“近似”、“附近”以及“大约”通常是指位于目标值的+/-10%之内。
除非另有说明,使用序数形容词“第一”、“第二”和“第三”等来描述共同的对象,仅表示所指的是相似对象的不同实例,而不是旨在暗示所描述的对象必须在时间上、空间上、次序上或者以任何其他方式处于给定的顺序。
为了本公开的目的,短语“A和/或B”和“A或B”是指(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”是指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或者(A、B和C)。
说明书中和权利要求书中的术语“左”、“右”、“前”、“后”、“顶部”、“底部”、“在...上方”、“在...下方”等(如果存在的话)用于描述目的,而不一定用于描述永久的相对位置。
应当指出,附图中具有与任何其他附图中的元件相同的附图标记(或名称)的那些元件可以以与所描述的方式类似的任何方式操作或起作用,但不限制于此。
为了实施例的目的,此处描述的各种电路和逻辑块中的晶体管是金属氧化物半导体(MOS)晶体管或其衍生物,其中,MOS晶体管包括漏极端子、源极端子、栅极端子和体端子(bulk terminal)。晶体管和/或MOS晶体管衍生物还包括三栅极晶体管和FinFET晶体管、栅极全包围圆柱形晶体管、隧穿FET(TFET)、方形线或矩形带状晶体管、铁电场FET(FeFET)或实现晶体管功能的其他器件(诸如碳纳米管或自旋电子器件)。MOSFET对称的源极端子和漏极端子是相同的端子并且在此可互换地使用。另一方面,TFET器件具有非对称源极端子和漏极端子。本领域技术人员将理解的是,在不背离本公开的范围的情况下,可以使用其他晶体管(例如,BJT PNP/NPN、BiCMOS、CMOS等)。
图1示出了先进先出(FIFO)状态生成器100。该FIFO状态生成器100由如图所示耦合的两个约翰逊或格雷编码顺序单元101和103;具有每位同步器1021-N的多个同步器102;XNOR(异或)门104;以及输出组合(联合)逻辑105组成。如图所示,写时钟和读时钟分别提供给两个约翰逊或格雷编码顺序单元101和103。该FIFO状态生成器100具有许多缺点。例如,图1的FIFO状态生成器100需要多个同步器,每个指针位一个同步器。图1的FIFO状态生成器100消耗大量的面积、泄漏和动态功率,因为这些同步器1021-N始终被时钟控制。
FIFO状态(FIFO_FULL)由组合逻辑105的大锥体(big cone)驱动。组合逻辑105包括XNOR门105a、105b、以及许多其他门(例如,N个门),其将各个同步器的输出与约翰逊或格雷编码顺序单元101进行比较。XNOR 104和其他XNOR门105a、105b等的输出由与门105c进行与运算以生成FIFO状态FIFO_FULL。这降低了整体性能并限制了FIFO集成,尤其是当FIFO涉及到跨IP(跨知识产权)流量时。尽管可以测试通向同步器的异步路径,但通常使用静态(固定式)扫描来完成。存在的同步器越多,泄漏到客户硅中的速度缺陷的风险越高。同步器的数量越多,泄露到客户硅基处理器中的高速缺陷的风险就越高。
对于图1的FIFO状态生成器100,同步器的平均故障间隔时间(MTBF)不是无限的。同步器越多,总体产品MTBF越小。图1的FIFO状态生成器100的代码一致性要求到同步器的所有路径都满足1个时钟的最大(max)延迟定时(具有时钟树偏斜、串扰等的额外余量)。这通常是半手动完成的,需要很大的努力。使用图1的FIFO状态生成器100生成状态指示符的过程不是鲁棒的并且容易出错。例如,多个同步器需要更多的工作并且承担更多的风险。
图2A示出了根据一些实施例的用于FIFO或流水线满状态生成的装置200(在本文也被称为FIFO或流水线状态生成器200)。该FIFO状态生成器200包括如图所示耦合的两个约翰逊或格雷编码指针(或保存指针的寄存器)101和103;比较逻辑(例如XNOR门104、105a、105b等);与门105c(用于接收所有异或非的输出)以及FIFO状态同步器201。FIFO状态同步器201包括如图所示耦合的滤波器、施密特触发器202以及触发器1和2(分别为203a和203b)。该滤波器被示为RC滤波器,并且协助响应,抑制任何噪声。在一些实施例中,可以使用另一种类型的滤波器。在一些实施例中,滤波器被去除。这里,施密特触发器202和滤波器在触发器203a和203b的输入处,施密特触发器202的输出用于设置或复位触发器203a和203b。触发器203a的输入被绑定到恒定值(例如,接地或0V),同时触发器203a的输出被接收为触发器203b的数据输入。为了确定FIFO是否满,触发器203a和203b由写时钟进行时钟控制。XNOR门(例如104、105a、105b等)是比较两个输入的比较器。XNOR门可以用任何合适的比较电路(或比较器)(例如XOR门)代替。本领域技术人员将理解,可以使用德摩根定理来优化或修改组合逻辑。这样的修改在各种实施例的范围内。
图2A的FIFO状态同步器201直接从两个指针(与读时钟相关联的指针和与写时钟相关联的指针)收敛状态。在这种情况下,根据一些实施例,不管指针宽度如何,都不使用其他同步器。在一些实施例中,用于FIFO状态生成的装置200使用标准的两级(双同步)或多级同步器和施密特触发器单元。
图2A的同步器203利用了以下事实:满/空信号的断言不是跨时钟事件,而是分别与写和读时钟域同步。当写指针追上读指针时,满信号被断言(asserted)。写指针在写时钟上递增,并且在写时钟域中使用满指示来门控(gate)写指针的递增。类似地,如图2B所示,当读指针追上写指针时,空信号被断言,并且在读时钟域中使用空信号来门控读数据和读指针的递增。
再次参考图2A,满和/或空的去断言(de-assertion)是跨时钟事件。当另一个指针拉开时,这些信号去断言。与对顺序单元上的异步复位/设置引脚的任何去断言一样,该边沿可以具有亚稳态风险,并且因此使用同步。允许断言立即通过异步设置引脚传播但对去断言进行同步的标准设置同步器可以掩盖这种危险。通过异步设置引脚进行适当的定时闭合来覆盖断言弧。
因为去断言与断言不具有定时关系,所以图2A的电路也可能具有与正常建立/保持定时冲突不同的亚稳态风险。通常,当数据输入在单元的建立/保持期间改变或者复位/设置输入在恢复/移除窗口内改变且同时时钟关闭到状态节点的传输门时,在顺序单元中发生亚稳态。状态节点没有到达轨道,并且进入亚稳态。在该电路中,如果设置的断言和去断言在时间上足够接近,使得异步设置/复位引脚没有时间将状态节点拉到轨道,则该同步器可能在恢复/移除窗口之外进入亚稳态。
为了减轻亚稳态风险,根据各种实施例,在同步器203的设置引脚之前添加施密特触发器202。在一些实施例中,施密特触发器202用作输入到同步器203的触发器203a和203b的(一个或多个)异步设置引脚中的输入信号的时间滤波器,以去除短脉冲将使触发器变为亚稳态的可能性。它在断言和去断言之间添加了足够的滞后,以消除这种亚稳态风险。
图2B示出了根据一些实施例的用于FIFO空状态生成的装置220。与图2A相比,这里的读时钟(READ_CLOCK)用于对FIFO触发器1和2(分别为203a和203b)进行采样。这样,FIFO状态同步器的输出(FIFO_EMPTY)指示FIFO是否为空。因为施密特触发器202的面积非常小,所以图2A-B的同步器的尺寸大致等于图1的一个同步器的尺寸。例如,施密特触发器202仅增加了大约6至8个额外的晶体管。
尽管本文的实施例公开了用于FIFO状态同步器的两个触发器,但是如果期望更高的MTBF,则可以用级联形式使用任意数量的触发器。触发器203a和203b(以及其他实施例的触发器)可以被替换为能够采样数据、清除或设置其输出等的任何合适的顺序单元。触发器203a和203b(以及其他实施例的其他触发器)还可以包括具有相关扫描控制和扫描输入的扫描小工具(未示出),用于测试同步器的操作。虽然参考用于FIFO的点101和103描述了各种实施例,但是FIFO可以是任何合适的流水线(例如,一系列寄存器)。在一个示例中,FIFO可以用后进先出(LIFO)流水线代替。实施例也可以扩展到其他类型的流水线。
图3示出了根据一些实施例的示出性能比较的曲线图300。示出了通过图1的FIFO设计(点集301)和使用图2A的实施例的FIFO设计(点集302)获得的合成频率。在该示例中,与图1的FIFO相比,图2A的FIFO即使在较低的FIFO深度处也具有20%的频率优势,并且该优势在较高的深度处增加到35%。
图4示出了根据一些实施例的示出面积比较的曲线图400。示出了利用图1的FIFO设计(点集401)和使用图2A的实施例的FIFO设计(点集402)获得的FIFO区域。图2A的实施例的面积比图1的FIFO设计的面积小得多,尤其是当FIFO深度增加时。图5示出了根据一些实施例的示出功率比较的曲线图500。示出了通过图1的FIFO设计(点集501)和使用图2A的实施例的FIFO设计(点集502)获得的FIFO功率。图2A的实施例的功率远小于图1的FIFO设计的功率,尤其是当FIFO深度增加时。
随着FIFO深度增加,满/空指示所需的同步器数量随着图1的设计而增加,但对于各种实施例的设计保持不变。如图4和图5所示,这直接影响功率和面积。各种实施例的FIFO同步器导致每个FIFO的显著节省,尤其是当FIFO深度增加时。各种实施例的FIFO同步器(例如,图2A-B)在图示的低端节省了23%的功率,在图示的高端节省了68%的功率。面积节省接近30%到65%。对于使用低VT(阈值)晶体管的较高频率FIFO,新设计的优势更加明显。
在一些芯片中,可能有多达500个异步FIFO。假设14nm工艺技术节点,在平均深度为64nm处,使用图2A的设计节省约50mW的功率和65,000平方微米。片上系统(SOC)的设计趋势是将更多的时钟交叉点移至完全异步的交叉点处,以实现更高的性能,同时增加异步时钟域的数量以节省功耗。
各种实施例的FIFO同步器解决了时钟交叉FIFO状态生成的所有已知限制。每种状态都使用一个同步器,而不管代码或FIFO深度如何。这样可以节省大量面积、泄漏和动态功率,并可以实现最优的MTBF和高速扫描。FIFO状态由触发器驱动。这样可以保证最优性能和跨IP集成。因为所有指针位都收敛到单个同步器中,所以易于实现代码一致性。与施密特触发器耦合的单个标准单元同步器完全覆盖了来自去除断言的亚稳态危险。
图6A示出了根据一些实施例的用于FIFO满状态生成的装置600(基于波纹的FIFO满状态同步器)。用于FIFO满状态生成的装置600包括如图所示耦合的两个约翰逊编码或格雷编码指针(或保存指针的寄存器)101和103;比较逻辑(例如,异或非门104、105a、105b等);与门105c(用于接收所有异或非的输出)以及FIFO状态同步器601。FIFO状态同步器包括如图所示耦合的触发器1和2(分别为601a和601b)和施密特触发器601c。这里,与门105c的输出用于设置或复位触发器601a。触发器601a和触发器601b的数据输入被绑定到恒定值(例如,接地或0V),同时触发器601a的输出被接收为施密特触发器601c的输入。施密特触发器601c的输出用于设置或复位触发器601b。为了确定FIFO是否满,触发器601a和601b由写时钟进行时钟控制。
图6A的同步器利用了以下事实:满/空信号的断言不是跨时钟事件,而是分别与写/读时钟域同步。当写指针追上读指针时,满信号被断言。写指针在写时钟上递增,并且在写时钟域中需要满指示来门控写指针的递增。类似地,如图6B所示,当读指针追上写指针时,空信号被断言,并且在读时钟域中需要空信号来门控读数据和读指针的递增。
返回参考图6A,满/空的去断言是跨时钟事件。当另一个指针拉开时,这些信号去断言。与对顺序单元上的异步设置引脚的任何去断言一样,该边沿具有存在亚稳态风险,并且需要同步。允许断言立即通过异步设置引脚传播但是对去断言进行同步的同步器可以覆盖这种危险。通过异步设置引脚进行适当的定时闭合来覆盖断言弧。
因为去断言与断言不具有定时关系,所以图6A的电路600还具有与正常建立/保持冲突不同的亚稳态风险。通常,当数据输入在单元的设置/保持窗口期间改变或者复位/设置在恢复/去除窗口期间改变且同时时钟关闭到状态节点的传输门时,在顺序单元中发生亚稳态。状态节点没有到达轨道,并且进入亚稳态。在该电路中,如果断言和去断言足够近,使得异步设置/复位引脚没有时间将状态节点拉到轨道,则无论设置/复位信号的改变是否发生在恢复/去除窗口内,该同步器都将进入亚稳态。在该电路中,通过在同步器触发器601a和601b之间添加施密特触发器601c来减轻这两个亚稳态源。施密特触发器601c对由第一触发器601a的上述任一条件引起的亚稳态值进行滤波,使其不传播到同步器601的第二触发器601b,而第一触发器601a的状态节点恢复到稳定值。这里,FIFO状态同步器601的输出(FIFO_FULL)指示FIFO为满。
图6B示出了根据一些实施例的用于FIFO空状态生成的装置620(基于波纹的FIFO空状态同步器)。与图6A相比,这里的读时钟(READ_CLOCK)用于对FIFO触发器601a和601b进行采样。这样,FIFO状态同步器601的输出(FIFO_EMPTY)指示FIFO是否为空。因为施密特触发器601c的面积非常小,所以图6A-B的同步器的尺寸大致等于图2A的同步器。例如,施密特触发器601c的影响仅增加了大约6至8个额外的晶体管。尽管本文的实施例公开了用于FIFO状态同步器的两个触发器,但是如果期望更高的MTBF,则可以用级联形式使用任意数量的触发器。参考图3-图5说明的性能优势适用于图6A-B的同步器。
图7示出了根据一些实施例的用于FIFO几乎满状态生成的装置700。用于确定FIFO是否几乎满的装置700类似于图2A的装置,但是增加了阈值(例如,ALMOST_FULL_THRESHOLD)。在一些实施例中,阈值预设与写时钟相关联的约翰逊编码或格雷编码指针101’(与约翰逊编码或格雷编码指针101相同,但是具有阈值能力)。该阈值可以是可编程的。该阈值允许设置用于指示几乎满FIFO的指示标。在一些实施例中,写指针101的值增加了ALMOST_FULL_THRESHOLD的值,然后结果被呈现给比较器104至105(例如,XNOR或XOR门)。因此,当FIFO中的空闲(未写入)空间等于ALMOST_FULL_THRESHOLD时,比较器生成FIFO_ALMOST_FULL指示。
图8示出了根据一些实施例的用于FIFO几乎空状态生成的装置800。用于确定FIFO是否几乎空的装置类似于图2B的装置,但是增加了阈值(例如,ALMOST_EMPTY_THRESHOLD)。在一些实施例中,阈值预设与读时钟(READ_CLOCK)相关联的约翰逊编码或格雷编码指针。该阈值可以是可编程的。在一些实施例中,读指针101的值增加ALMOST_EMPTY_THRESHOLD的值,然后结果被提供给比较器104至105。因此,当FIFO中的填充(未读取)空间等于ALMOST_EMPTY_THRESHOLD时,比较器生成FIFO_ALMOST_EMPTY指示。
图9示出了根据一些实施例的用于FIFO几乎满状态生成的装置900。用于确定FIFO是否几乎满的装置类似于图2A的装置,但是增加了阈值(例如,ALMOST_FULL_THRESHOLD)。该阈值由加法器902添加到与写时钟(WRITE_CLOCK)相关联的指针。任何合适的加法器可以用于实现图9的加法器902。阈值可以是可编程的。在一些实施例中,加法器902获取写指针101的值,将其增加ALMOST_FULL_THRESHOLD的值,并将结果呈现给比较器104至105。因此,当FIFO中的空闲(未写入)空间等于ALMOST_FULL_THRESHOLD时,比较器生成FIFO满指示。
图10示出了根据一些实施例的用于FIFO几乎空状态生成的装置1000。用于确定FIFO是否几乎空的装置类似于图2B的装置,但是增加了阈值(例如,ALMOST_EMPTY_THRESHOLD)。该阈值由加法器902添加到与读时钟(READ CLOCK)相关联的指针。任何合适的加法器可以用于实现图10的加法器902。阈值可以是可编程的。在一些实施例中,加法器902获取读指针101的值,将其增加ALMOST_EMPTY_THRESHOLD的值,并将结果呈现给比较器104至105。因此,当FIFO中的填充(未读取)空间等于ALMOST_EMPTY_THRESHOLD时,比较器生成FIFO空指示。
图11A示出了根据一些实施例的用于使用两个施密特触发缓冲器的FIFO满状态生成的装置1100。用于FIFO满状态生成的装置1100包括两个约翰逊编码或格雷编码指针(或保持指针的寄存器)101和103;比较逻辑(例如XNOR门104、105a、105b等);与门105c(用于接收所有XNOR的输出)、以及FIFO状态同步器1101。FIFO状态同步器1101包括如图所示耦合的滤波器、施密特触发器202、触发器1和2(分别为203a和203b)以及施密特触发器203c。这里,施密特触发器202的输出用于设置或复位触发器203a。触发器203a的数据输入被绑定到恒定值(例如,接地或0V),同时触发器203a的输出被接收为施密特触发器203c的输入。施密特触发器203c的输出用于设置或复位触发器203b。为了确定FIFO是否满,触发器203a和203b由WRITE_CLOCK进行时钟控制。
图11B示出了根据一些实施例的用于使用两个施密特触发缓冲器的FIFO空状态生成的装置1120。与图11A相比,这里读时钟(READ_CLOCK)用于对FIFO触发器203a和203b进行采样。这样,FIFO状态同步器1101的输出(FIFO_EMPTY)指示FIFO是否为空。
表1示出了各种实施例的比较。
表1
Figure BDA0002693840160000141
Figure BDA0002693840160000151
这里,根据Vcc的10%到90%计算转换时间。百分比增加是指当在图6A和图11A的设计中同步器203的两个触发器203a和203b之间的施密特触发器203c在触发器203a的输出锁存器接近其亚稳值的点处释放设置管脚上的假信号的情况下减小亚稳态的影响时的转换时间增加。例如,表1中的第一行示出了在不存在施密特触发器202或203c的设计中,在慢PVT角中,触发器203a的输出转换时间从没有亚稳定的情形下的基线t增加到当通过在不恰当的时间消失的假信号引入亚稳态时的约43t。相反,如图6A或图11A所示,通过添加施密特触发器203c,当将触发器203a的输出锁存器中具有最坏情况亚稳态的情形与没有亚稳态的情形进行比较时,203c的输出转换时间略微增加不超过4%。此外,在完成的所有模拟中,亚稳态区域中的电压波形从施密特触发器203c输入处的非单调(在确定值之前上下摆动)转换为施密特触发器203c输出处的干净、单调过渡。在设置引脚上也添加施密特触发器202(如在图11A中)减少了假信号足够强大以首先将触发器203a的输出发送到亚稳态的情形的数量,从而提供进一步的保护。
图12示出了根据一些实施例的具有用于FIFO状态生成的装置的智能设备或计算机系统或SoC(片上系统)。根据一些实施例,SoC 2401中或与之相关联的任何块(硬件或软件)能够包括用于FIFO状态生成的装置。
在一些实施例中,设备2400标识适当的计算设备,诸如计算平板电脑、移动电话或智能电话、膝上型计算机、台式计算机、物联网(IOT)设备、服务器、可穿戴设备、机顶盒、具有无线功能的电子阅读器等。将理解,在设备2400中通常示出了某些组件,并且在设备2400中未示出这种设备的所有组件。
在示例中,设备2400包括SoC(片上系统)2401。使用图12中的虚线示出了SoC 2401的示例边界,其中一些示例组件被示出为包括在SoC 2401内–但是,SoC 2401可以包括设备2400的任何适当组件。
在一些实施例中,设备2400包括处理器2404。处理器2404可以包括一个或多个物理设备,诸如微处理器、应用处理器、微控制器、可编程逻辑设备或其他处理装置。由处理器2404执行的处理操作包括在其上执行应用和/或设备功能的操作平台或操作系统的执行。处理操作包括与人类用户或其他设备的I/O(输入/输出)相关的操作,与功率管理相关的操作,和/或与将计算设备2400连接到另一设备有关的操作。处理操作还可以包括与音频I/O和/或显示I/O相关的操作。
在一些实施例中,处理器2404包括多个处理核(也称为核)2408a、2408b、2408c。尽管在图12中仅示出了三个核2408a、2408b、2408c,但是处理器2404可以包括任何其他适当数量的处理核,例如,数十个或甚至数百个处理核。处理器核2408a、2408b、2408c可以在单个集成电路(IC)芯片上实现。此外,该芯片可以包括一个或多个共享和/或专用缓存、总线或互连、图形和/或存储器控制器、或其他组件。
在一些实施例中,处理器2404包括缓存2406。在示例中,缓存2406的部分可以专用于各个核2408(例如,缓存2406的第一部分专用于核2408a,缓存2406的第二部分专用于核2408b,依此类推)。在示例中,缓存2406的一个或多个部分可以在两个或多个核2408之间共享。缓存2406可以被划分为不同的级别,例如,级别1(L1)缓存、级别2(L2)缓存、级别3(L3)缓存等。
在一些实施例中,处理器核2404可以包括获取单元以获取由核2404执行的指令(包括具有条件分支的指令)。可以从诸如存储器2430的任何存储设备获取指令。处理器核2404还可以包括解码单元以对所提取的指令进行解码。例如,解码单元可以将获取的指令解码为多个微操作。处理器核2404可以包括调度单元以执行与存储解码的指令相关联的各种操作。例如,调度单元可以保存来自解码单元的数据,直到指令准备好分配为止,例如,直到解码指令的所有源值变得可用为止。在一个实施例中,调度单元可以调度和/或发布(或分配)解码的指令到执行单元用于执行。
执行单元可以在分派的指令被解码(例如,由解码单元)并分派(例如,由调度单元)之后执行它们。在实施例中,执行单元可以包括多于一个的执行单元(诸如成像计算单元、图形计算单元、通用计算单元等)。执行单元还可以执行各种算术运算,例如加法、减法、乘法和/或除法,并且可以包括一个或多个算术逻辑单元(ALU)。在实施例中,协处理器(未示出)可以结合执行单元来执行各种算术运算。
此外,执行单元可以无序地执行指令。因此,在一个实施例中,处理器核2404可以是无序处理器核。处理器核2404还可以包括退出(retirement)单元。退出单元可以在执行的指令被提交之后退出它们。在实施例中,执行的指令的退出可能导致从指令的执行中提交处理器状态、指令所使用的物理寄存器被取消分配等。处理器核2404还可以包括总线单元,以使得能够经由一个或多个总线在处理器核2404的组件和其他组件之间进行通信。处理器核2404还可以包括一个或多个寄存器以存储由核2404的各种组件访问的数据(例如与所分配的应用优先级和/或子系统状态(模式)关联相关的值)。
在一些实施例中,设备2400包括连接电路2431。例如,连接电路2431包括硬件设备(例如,无线和/或有线连接器和通信硬件)和/或软件组件(例如,驱动器、协议栈),例如以使设备2400能够与外部设备通信。设备2400可以与诸如其他计算设备、无线接入点或基站等的外部设备分开。
在示例中,连接电路2431可以包括多种不同类型的连接性。概括而言,连接电路2431可以包括蜂窝连接电路,无线连接电路等。连接电路2431的蜂窝连接电路通常是指由无线运营商提供的蜂窝网络连接,例如经由GSM(全球移动通信系统)或变体或派生、CDMA(码分多址)或变体或派生、TDM(时分复用)或变体或派生、第三代合作伙伴计划(3GPP)通用移动电信系统(UMTS)系统或变体或派生、3GPP长期演进(LTE)系统或变体或派生、3GPP LTE高级(LTE-A)系统或变体或派生、第五代(5G)无线系统或变体或派生、5G移动网络系统或变体或派生、5G新无线电(NR)系统或变体或派生、或其他蜂窝服务标准。连接电路2431的无线连接电路(或无线接口)是指非蜂窝的无线连接,并且可以包括个人区域网络(例如,蓝牙、近场等)、局域网(例如,Wi-Fi)和/或广域网(例如,WiMax)和/或其他无线通信。在示例中,连接电路2431可以包括例如有线或无线接口之类的网络接口,例如使得系统实施例可以被并入无线设备中,例如蜂窝电话或个人数字助理。
在一些实施例中,设备2400包括控制集线器2432,其代表与一个或多个I/O设备交互有关的硬件设备和/或软件组件。例如,处理器2404可以经由控制集线器2432与显示器2422、一个或多个外围设备2424、存储设备2428、一个或多个其他外部设备2429等中的一个或多个通信。控制集线器2432可以是芯片组、平台控制集线器(PCH)等。
例如,控制集线器2432示出了用于连接到设备2400的附加设备的一个或多个连接点,例如,用户可以通过连接点与系统进行交互。例如,可以附接到设备2400的设备(例如,设备2429)包括麦克风设备、扬声器或立体声系统、音频设备、视频系统或其他显示设备、键盘或小键盘设备、或用于特定应用的其他I/O设备(例如读卡器或其他设备)。
如上所述,控制集线器2432可与音频设备、显示器2422等交互。例如,通过麦克风或其他音频设备的输入可以为设备2400的一个或多个应用或功能提供输入或命令。另外,可以提供音频输出来代替显示输出,或者除了显示输出之外还提供音频输出。在另一示例中,如果显示器2422包括触摸屏,则显示器2422还充当输入设备,其可以至少部分地由控制集线器2432管理。计算设备2400上还可以有附加按钮或开关以提供由控制集线器2432管理的I/O功能。在一个实施例中,控制集线器2432管理诸如加速度计、照相机、光传感器或其他环境传感器、或者可以包括在设备2400中的其他硬件之类的设备。输入可以是直接用户交互、以及向系统提供环境输入以影响其操作(诸如过滤噪声、调整显示器以进行亮度检测、为照相机应用闪光灯或其他特征)的一部分。
在一些实施例中,控制集线器2432可以使用任何适当的通信协议(例如,PCIe(快速外围组件互连)、USB(通用串行总线)、Thunderbolt、高清晰度多媒体接口(HDMI)、火线等)耦合到各种设备。
在一些实施例中,显示器2422表示为用户提供视觉和/或触觉显示以与设备2400交互的硬件(例如,显示设备)和软件(例如,驱动器)组件。显示器2422可以包括显示接口、显示屏和/或用于向用户提供显示的硬件设备。在一些实施例中,显示器2422包括向用户提供输出和输入的触摸屏(或触摸板)设备。在示例中,显示器2422可以直接与处理器2404通信。显示器2422可以是内部显示设备中的一个或多个,如在移动电子设备或膝上型设备或经由显示接口(例如,显示端口等)附接的外部显示设备中。在一个实施例中,显示器2422可以是头戴式显示器(HMD),例如在虚拟现实(VR)应用或增强现实(AR)应用中使用的立体显示设备。
在一些实施例中,尽管在图中未示出,但除了处理器2404之外(或代替处理器2404),设备2400可以包括图形处理单元(GPU),该图形处理单元包括一个或多个图形处理核,其可控制在显示器2422上显示内容的一个或多个方面。
控制集线器2432(或平台控制器集线器)可以包括硬件接口和连接器,以及软件组件(例如,驱动器、协议栈),以进行例如到外围设备2424的外围连接。
将理解,设备2400既可以是其他计算设备的外围设备,也可以具有与其连接的外围设备。设备2400可以具有“对接”连接器以连接到其他计算设备,用于诸如管理(例如,下载和/或上传、改变、同步)设备2400上的内容的目的。另外,对接连接器可以允许设备2400连接到某些外围设备,这些外围设备允许计算设备2400控制例如到视听或其他系统的内容输出。
除了专用的对接连接器或其他专有的连接硬件之外,设备2400还可以通过通用或基于标准的连接器进行外围连接。常见类型可以包括通用串行总线(USB)连接器(可以包括多种不同硬件接口中的任何一个)、包括小型显示端口(MDP)的显示端口、高清晰度多媒体接口(HDMI)、火线或其他类型。
在一些实施例中,例如,除了直接耦合到处理器2404之外,或者代替直接耦合到处理器2404,连接电路2431可以耦合到控制集线器2432。在一些实施例中,例如,除了直接耦合到处理器2404外,或者代替直接耦合到处理器2404,显示器2422可以耦合到控制集线器2432。
在一些实施例中,设备2400包括经由存储器接口2434耦合到处理器2404的存储器2430。存储器2430包括用于在设备2400中存储信息的存储器设备。
在一些实施例中,存储器2430包括如参考各种实施例所描述的用于维持稳定时钟的装置。存储器可以包括非易失性(如果存储设备的电源被中断,则状态不改变)和/或易失性(如果存储设备的电源被终端,则状态不确定)存储器设备。存储器设备2430可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储器设备或具有适当性能以充当过程存储器的某一其他存储器设备。在一个实施例中,存储器2430可以用作设备2400的系统存储器,以存储当一个或多个处理器2404执行应用或过程时使用的数据和指令。存储器2430可以存储应用数据、用户数据、音乐、照片、文档或其他数据以及与设备2400的应用和功能的执行相关的系统数据(无论是长期的还是临时的)。
各种实施例和示例的元素还被提供作为用于存储计算机可执行指令(例如,用于实现本文中讨论的任何其他处理的指令)的机器可读介质(例如,存储器2430)。机器可读介质(例如,存储器2430)可以包括但不限于闪存、光盘、CD-ROM、DVD ROM、RAM、EPROM、EEPROM、磁卡或光卡、相变存储器(PCM)或适用于存储电子或计算机可执行指令的其他类型的机器可读介质。例如,本公开的实施例可以作为计算机程序(例如,BIOS)来下载,该计算机程序可以经由计算机经由通信链路(例如,调制解调器或网络连接)以数据信号的形式从远程计算机(例如,服务器)传输到请求计算机(例如,客户端)。
在一些实施例中,设备2400包括温度测量电路2440,例如,用于测量设备2400的各种组件的温度。在示例中,温度测量电路2440可以被嵌入、耦合或附接到其温度要被测量和监控的各种组件。例如,温度测量电路2440可以测量核2408a、2408b、2408c;电压调节器2414;存储器2430;SoC 2401的主板和/或设备2400的任何适当组件中的一个或多个的温度(或内部温度)。
在一些实施例中,设备2400包括功率测量电路2442,例如,用于测量由设备2400的一个或多个组件消耗的功率。在示例中,除了测量功率之外,或代替测量功率,功率测量电路2442可以测量电压和/或电流。在示例中,功率测量电路2442可以被嵌入、耦合或附接到各种组件,这些组件的功率、电压和/或电流消耗将被测量和监视。例如,功率测量电路2442可以测量由一个或多个电压调节器2414供给的功率、电流和/或电压;供给到SoC 2401的功率;供给到设备2400的功率;设备的处理器2404(或任何其他组件)消耗的功率。
在一些实施例中,设备2400包括一个或多个电压调节器电路,通常被称为电压调节器(VR)2414。VR 2414生成适当电压电平的信号,其可以被提供操作设备2400的任何适当组件。仅作为示例,VR 2414被示出为向设备2400的处理器2404提供信号。在一些实施例中,VR 2414接收一个或多个电压标识(VID)信号,并基于VID信号生成适当的电平的电压信号。各种类型的VR可以用于VR 2414。例如,VR 2414可以包括“降压”VR、“升压”VR、降压和升压VR的组合、低压降(LDO)调节器、开关DC-DC调节器、基于恒定时间控制器的DC-DC调节器等。降压VR通常用于输电应用,在该应用中,输入电压需要以小于1的比率转换为输出电压。升压VR通常用于输电应用,在该应用中,输入电压需要以大于1的比率转换为输出电压。在一些实施例中,每个处理器核具有其自己的VR,其由PCU 2410a/b和/或PMIC 2412控制。在一些实施例中,每个核具有分布式LDO的网络以提供对功率管理的有效控制。LDO可以是数字LDO、模拟LDO、或数字LDO或模拟LDO的组合。在一些实施例中,VR 2414包括电流跟踪装置以测量通过(一个或多个)电源轨的电流。
在一些实施例中,设备2400包括一个或多个时钟生成器电路,通常被称为时钟生成器2416。时钟生成器2416生成处于适当频率电平的时钟信号,该时钟信号可以被提供给设备2400的任何适当组件。仅作为示例,时钟生成器2416被示出为向设备2400的处理器2404提供时钟信号。在一些实施例中,时钟生成器2416接收一个或多个频率标识(FID)信号,并基于FID信号以适当的频率生成时钟信号。
在一些实施例中,设备2400包括向设备2400的各个组件供电的电池2418。仅作为示例,电池2418被示出为向处理器2404供电。尽管在图中未示出,但设备2400可以包括充电电路,例如,基于从交流(AC)适配器接收到的交流电源对电池进行充电。
在一些实施例中,设备2400包括功率控制单元(PCU)2410(也称为功率管理单元(PMU)、功率控制器等)。在示例中,PCU 2410的一些部分可以由一个或多个处理核2408实现,并且PCU 2410的这些部分使用虚线框象征性地示出并且标记为PCU 2410a。在示例中,PCU 2410的一些其他部分可以在处理核2408的外部实现,并且PCU 2410的这些部分使用虚线框象征性地示出并且标记为PCU 2410b。PCU 2410可以实现设备2400的各种功率管理操作。PCU 2410可以包括硬件接口、硬件电路、连接器、寄存器等以及软件组件(例如,驱动器、协议栈),以实现设备2400的各种功率管理操作。
在一些实施例中,设备2400包括功率管理集成电路(PMIC)2412,例如,以实现设备2400的各种功率管理操作。在一些实施例中,PMIC 2412是可重配置的功率管理IC(RPMIC)和/或IMVP(
Figure BDA0002693840160000221
移动电压定位)。在示例中,PMIC在与处理器2404分离的IC芯片内。PMIC可以实现设备2400的各种功率管理操作。PMIC 2412可以包括硬件接口、硬件电路、连接器、寄存器等以及软件组件(例如,驱动器、协议栈),以实现设备2400的各种功率管理操作。
在示例中,设备2400包括PCU 2410或PMIC 2412中的一者或两者。在示例中,设备2400中可能不存在PCU 2410或PMIC 2412中的任何一个,因此,使用虚线示出这些组件。
设备2400的各种功率管理操作可以由PCU 2410、PMIC 2412或PCU 2410和PMIC2412的组合来执行。例如,PCU 2410和/或PMIC 2412可以选择设备2400的各种组件的功率状态(例如,P状态)。例如,PCU 2410和/或PMIC 2412可以选择设备2400的各种组件的功率状态(例如,根据ACPI(高级配置和电源接口)规范)。仅作为示例,PCU 2410和/或PMIC 2412可以使设备2400的各种组件转变为睡眠状态、活动状态、适当的C状态(例如,根据ACPI规范,C0状态或另一适当的C状态)。在示例中,PCU 2410和/或PMIC 2412可以例如通过分别输出VID信号和/或FID信号来控制VR 2414输出的电压和/或时钟生成器输出的时钟信号的频率。在示例中,PCU 2410和/或PMIC 2412可以控制电池功率使用、电池2418的充电以及与节电操作有关的特征。
时钟生成器2416可以包括锁相环(PLL)、锁频环(FLL)或任何合适的时钟源。在一些实施例中,处理器2404的每个核具有其自己的时钟源。这样,每个核可以以独立于另一核的操作频率的频率进行操作。在一些实施例中,PCU 2410和/或PMIC 2412执行自适应或动态频率缩放或调整。例如,如果处理器核未以其最大功耗阈值或极限操作,则可以增加其频率。在一些实施例中,PCU 2410和/或PMIC 2412确定处理器的每个核的操作条件,并且当PCU 2410和/或PMIC 2412确定核在低于目标性能水平下操作时,适时地调整该核的频率和/或电源电压,而无需内时钟源(例如,该核的PLL)失锁。例如,如果核从电源轨汲取的电流小于为该核或处理器2404分配的总电流,则PCU 2410和/或PMIC 2412可以暂时增加该核或处理器2404的功率汲取(例如,通过增加时钟频率和/或电源电压电平),使得核或处理器2404可以以更高的性能水平执行。这样,可以暂时增加处理器2404的电压和/或频率,而不会破坏产品可靠性。
在示例中,PCU 2410和/或PMIC 2412可以例如至少部分地基于从功率测量电路2442、温度测量电路2440、电池2418的充电水平和/或可用于功率管理的任何其他适当信息接收的测量来执行功率管理操作。为此,PMIC 2412通信地耦合到一个或多个传感器,以感测/检测对系统/平台的功率/热行为有影响的一个或多个因素中的各种值/变化。一个或多个因素的示例包括电流、电压降、温度、工作频率、工作电压、功耗、核间通信活动等。这些传感器中的一个或多个可以被提供为与计算系统的一个或多个组件或逻辑/IP块物理接近(和/或热接触/耦合)。另外,在至少一个实施例中,(一个或多个)传感器可直接耦合到PCU2410和/或PMIC 2412,以允许PCU 2410和/或PMIC 2412至少部分地基于由一个或多个传感器检测到的(一个或多个)值来管理处理器核能量。
还示出了设备2400的示例软件堆栈(尽管未示出软件堆栈的所有元素)。仅作为示例,处理器2404可以执行应用程序2450、操作系统2452、一个或多个功率管理(PM)专用应用程序(例如,一般称为PM应用2458)等。PM应用2458也可以由PCU 2410和/或PMIC 2412执行。OS 2452还可以包括一个或多个PM应用2456a、2456b、2456c。OS 2452还可以包括各种驱动程序2454a、2454b、2454c,2454b、2454c等,其中的一些可以专用于功率管理目的。在一些实施例中,设备2400还可以包括基本输入/输出系统(BIOS)2420。BIOS 2420可以与OS 2452通信(例如,经由一个或多个驱动程序2454),与处理器2404通信等。
例如,PM应用2458、2456、驱动程序2454、BIOS 2420等中的一个或多个可以用于实现功率管理特定任务,例如,控制设备2400的各种组件的电压和/或频率,从而控制设备2400的各种组件的唤醒状态、睡眠状态和/或任何其他适当的功率状态;控制电池功率使用、电池2418的充电、与节电操作相关的特征等。
在一些实施例中,电池2418是锂金属电池,具有压力室以允许对电池施加均匀压力。压力室由金属板(例如压力均衡板)支撑,该金属板用于给电池提供均匀的压力。压力室可以包括压力气体、弹性材料、弹簧板等。压力室的外壳自由弯曲,在其边缘处受到(金属)外壳的约束,但仍对压缩电池单元的板施加均匀的压力。压力室给电池提供均匀的压力,其用于使高能量密度电池的电池寿命增加例如20%。
在一些实施例中,在PCU 2410a/b上执行的pCode具有为pCode的运行时支持启用额外的计算和遥测资源的能力。这里,pCode是指由PCU 2410a/b执行的用于管理2401性能的固件。例如,pCode可以为处理器设置频率和适当的电压。pCode的一部分可以经由OS2452访问。在各种实施例中,提供了基于工作负载、用户行为和/或系统条件动态改变能源性能偏好(EPP)值的机制和方法。在OS 2452和pCode之间可以有定义良好的接口。该接口可以允许或便于几个参数的软件配置和/或可以向pCode提供提示。例如,EPP参数可以通知pCode算法是性能还是电池寿命更重要。
OS 2452也可以通过包括机器学习支持作为OS 2452的一部分,并通过机器学习预测调整OS向硬件(例如,SCO 2401的各种组件)提示的EPP值,或者以类似于由动态调整技术(DTT)驱动程序的方式将机器学习预测传递给pCode来完成此支持。在此模型中,OS 2452对DTT可用的同一组遥测数据具有可见性。作为DTT机器学习提示设置的结果,pCode可以根据激活类型的机器学习预测来调整其内部算法,以实现最优的功率和性能结果。例如,pCode可以增加处理器利用率变化的责任,以实现对用户活动的快速响应,或者通过减少处理器利用率的责任或者通过调整节能优化节省更多功率和增加性能损失来增加节能的偏差。这种方法可以有助于节省更多的电池寿命,以防启用的活动类型比系统可以启用的活动类型降低一些性能水平。pCode可以包括动态EPP的算法,该算法可以取两个输入,一个取自OS2452,另一个取自诸如DTT的软件,并且可以选择性地选择提供更高的性能和/或响应性。作为该方法的一部分,pCode可以在DTT中启用选项,以针对不同类型的活动调整DTT的反应。
在说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用意味着结合实施例描述的特定特征、结构或特性包括在至少一些实施例中,但不必包括在所有实施例中。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定都指相同的实施例。如果说明书声明包括组件、特征、结构或特性“可以”、“可能”或“能够”,但不要求包括该特定组件、特征、结构或特性。如果说明书声明“可以”、“可能”或“能够”包括组件、特征、结构或特性,则该特定组件、特征结构或特性不需要包括在内。如果说明书或权利要求书提及“一个”或“一种”元件,这并不意味着只有一个元件。如果说明书或权利要求书提及“附加”元件,则不排除存在多于一个的附加元件。
此外,在一个或多个实施例中,可以以任何合适的方式组合特定特征、结构、功能或特性。例如,在与两个实施例相关联的特定特征、结构、功能或特性不相互排斥的任何地方,第一实施例可以与第二实施例组合。
虽然已经结合本公开的具体实施例描述了本公开,但是根据前面的描述,这些实施例的许多替换、修改和变化对于本领域的普通技术人员来说是显而易见的。本公开的实施例旨在包含落入所附权利要求的宽泛范围内的所有这样的替换、修改和变化。
此外,为了简化说明和讨论,并且为了不模糊本公开,在所呈现的附图中可以示出或可以不示出到集成电路(IC)芯片和其他组件的公知的电源/接地连接。此外,可以以框图的形式示出布置,以避免使本公开不清楚,并且还鉴于关于这种框图布置的实现的细节高度依赖于本公开将在其中实现的平台这一事实(即,这样的细节应该在本领域技术人员的范围内)。在阐述特定细节(例如,电路)以描述本发明的实例性实施例的情况下,本领域的技术人员应了解,在没有这些具体细节或者采用其变化的情况下,也能够实践本公开。因此,本描述要看作是说明性而不是限制性的。
示例1:一种装置,包括:流水线;第一指针集,与流水线相关联,其中第一指针集与用于从流水线读取的读时钟相关联;第二指针集,与流水线相关联,其中,第二指针集与用于写入流水线的写时钟相关联;比较器,用于将第一指针集与第二指针集进行比较;逻辑,耦合到比较器的输出,其中,逻辑执行与运算;滤波器,耦合到逻辑的输出;施密特触发器,耦合到滤波器;至少两个触发器,耦合到施密特触发器,其中,至少两个触发器中的一者的输出指示流水线的状态。
示例2:根据示例1的装置,其中,比较器包括逻辑门以执行异或运算或者异或非运算。
示例3:根据示例1的装置,其中,施密特触发器的输出用于设置或复位至少两个触发器的输出。
示例4:根据示例1的装置,其中,至少两个触发器的时钟端子耦合到读时钟以指示流水线的空状态。
示例5:根据示例1的装置,其中,至少两个触发器的时钟端子耦合到写时钟以指示流水线的满状态。
示例6:根据示例1的装置,其中,第一指针集和第二指针集是约翰逊编码指针。
示例7:根据示例1的装置,其中,第一指针集和第二指针集是格雷编码指针。
示例8:根据示例1的装置,其中,至少两个触发器中的第一触发器的输入耦合到接地或电源,并且其中,至少两个触发器中的第一触发器的输出耦合到至少两个触发器中的第二触发器的输入。
示例9:一种装置,包括:流水线;比较器,用于将第一指针集与第二指针集进行比较,其中,第一指针集与流水线相关联以从流水线中读取,其中,第二指针集与流水线相关联以写入流水线;逻辑,耦合到比较器的输出,其中,逻辑用于对输出执行与运算;以及流水线状态同步器,耦合到逻辑,其中,流水线状态同步器用于提供流水线是满、空、几乎满还是几乎空的指示符。
示例10:根据示例9的装置,其中,FIFO状态同步器包括耦合在两个触发器之间的施密特触发器,其中,两个触发器中的一者的输出指示流水线的状态,其中,两个触发器中的一者由逻辑的输出控制。
示例11:根据示例10的装置,其中,第一指针集与用于从流水线读取的读时钟相关联,并且其中,第二指针集与用于写入流水线的写时钟相关联。
示例12:根据示例11的装置,其中,两个触发器的时钟端子耦合到读时钟以指示流水线的空状态。
示例13:根据示例11的装置,其中,两个触发器的时钟端子耦合到写时钟以指示流水线的满状态。
示例14:根据示例10的装置,其中,两个触发器中的第一触发器的输入耦合到接地或电源,其中,两个触发器的第一触发器的输出耦合到施密特触发器的输入,并且其中,施密特触发器的输出用于设置或复位两个触发器中的第二触发器。
示例15:根据示例9的装置,其中,比较器包括XNOR逻辑门。
示例16:根据示例9的装置,其中,第一指针集和第二指针集是约翰逊编码指针,或者其中,第一指针集和第二指针集是格雷编码指针。
示例17:一种系统,包括:存储器;处理器,耦合到存储器;以及无线接口,允许处理器与另一设备通信,其中,处理器包括:先进先出(FIFO);第一指针集,与FIFO相关联,其中第一指针集与用于从FIFO读取的读时钟相关联;第二指针集,与FIFO相关联,其中第二指针集与用于向FIFO写入的写时钟相关联;比较器,将第一指针集与第二指针集进行比较;逻辑,耦合至到比较器的输出,其中逻辑执行与运算;滤波器,耦合到逻辑的输出;施密特触发器,耦合到滤波器;以及两个触发器,耦合到施密特触发器,其中两个触发器中的一者的输出指示FIFO的状态。
示例18:根据示例17的系统,其中,施密特触发器的输出用于设置或复位两个触发器的输出。
示例19:根据示例17的系统,其中,两个触发器的时钟端子耦合到读时钟以指示FIFO的空状态。
示例20:根据示例17的系统,其中,两个触发器的时钟端子耦合到写时钟以指示FIFO的满状态,其中,第一指针集和第二指针集是约翰逊编码指针,或者其中第一指针集和第二指针集是格雷编码指针。
提供了摘要,其将允许读者确定本技术公开的本质和要旨。提交了摘要,应理解,摘要不用于限制权利要求的范围或含义。因此,以下权利要求书被并入具体实施方式中,其中每个权利要求书本身作为单独的实施例。

Claims (23)

1.一种装置,包括:
流水线;
第一指针集,与所述流水线相关联,其中,所述第一指针集与用于从所述流水线读取的读时钟相关联;
第二指针集,与所述流水线相关联,其中,所述第二指针集与用于向所述流水线写入的写时钟相关联;
比较器,用于将所述第一指针集与所述第二指针集进行比较;
逻辑,耦合到所述比较器的输出,其中,所述逻辑用于执行与运算;
滤波器,耦合到所述逻辑的输出;
施密特触发器,耦合到所述滤波器;以及
至少两个触发器,耦合到所述施密特触发器,其中,所述至少两个触发器中的一者的输出指示所述流水线的状态。
2.根据权利要求1所述的装置,其中,所述比较器包括用于执行异或运算或者异或非运算的逻辑门。
3.根据权利要求1所述的装置,其中,所述施密特触发器的输出用于设置或复位所述至少两个触发器的输出。
4.根据权利要求1所述的装置,其中,所述至少两个触发器的时钟端子耦合到所述读时钟以指示所述流水线的空状态。
5.根据权利要求1所述的装置,其中,所述至少两个触发器的时钟端子耦合到所述写时钟以指示所述流水线的满状态。
6.根据权利要求1所述的装置,其中,所述第一指针集和所述第二指针集是约翰逊编码指针。
7.根据权利要求1所述的装置,其中,所述第一指针集和所述第二指针集是格雷编码指针。
8.根据权利要求1至7中任一项所述的装置,其中,所述至少两个触发器中的第一触发器的输入耦合到接地或电源,并且其中,所述至少两个触发器中的所述第一触发器的输出耦合到所述至少两个触发器中的第二触发器的输入。
9.一种装置,包括:
流水线;
比较器,用于将第一指针集与第二指针集进行比较,其中,所述第一指针集与所述流水线相关联以从所述流水线读取,其中,所述第二指针集与所述流水线相关联以向所述流水线写入;
逻辑,耦合到所述比较器的输出,其中,所述逻辑用于对所述输出执行与运算;以及
流水线状态同步器,耦合到所述逻辑,其中,所述流水线状态同步器用于提供所述流水线是满、空、几乎满还是几乎空的指示符。
10.根据权利要求9所述的装置,其中,所述流水线状态同步器包括耦合在两个触发器之间的施密特触发器,其中,所述两个触发器中的一者的输出指示所述流水线的状态,其中,所述两个触发器中的一者由所述逻辑的输出控制。
11.根据权利要求10所述的装置,其中,所述第一指针集与用于从所述流水线读取的读时钟相关联,并且其中,所述第二指针集与用于向所述流水线写入的写时钟相关联。
12.根据权利要求11所述的装置,其中,所述两个触发器的时钟端子耦合到所述读时钟以指示所述流水线的空状态。
13.根据权利要求11所述的装置,其中,所述两个触发器的时钟端子耦合到所述写时钟以指示所述流水线的满状态。
14.根据权利要求10所述的装置,其中,两个触发器中的第一触发器的输入耦合到接地或电源,其中,所述两个触发器中的所述第一触发器的输出耦合到所述施密特触发器的输入,并且其中,所述施密特触发器的输出用于设置或复位所述两个触发器中的第二触发器。
15.根据权利要求9至14中任一项所述的装置,其中,所述比较器包括异或非逻辑门。
16.根据权利要求9至14中任一项所述的装置,其中,所述第一指针集和所述第二指针集是约翰逊编码指针,或者其中,所述第一指针集和所述第二指针集是格雷编码指针。
17.一种系统,包括:
存储器;
处理器,耦合到所述存储器;以及
无线接口,允许所述处理器与另一设备通信,其中,所述处理器包括根据权利要求1至8中任一项所述的装置。
18.一种系统,包括:
存储器;
处理器,耦合到所述存储器;以及
无线接口,允许所述处理器与另一设备通信,其中,所述处理器包括根据权利要求9至16中任一项所述的装置。
19.一种方法,包括:
通过比较器将第一指针集与第二指针集进行比较,其中,所述第一指针集与流水线相关联,其中,所述第一指针集与用于从所述流水线读取的读时钟相关联,其中,所述第二指针集与所述流水线相关联,其中,所述第二指针集与用于向所述流水线写入的写时钟相关联;
通过逻辑对所述比较器的输出执行与运算;
将滤波器耦合到所述逻辑的输出;
将施密特触发器耦合到所述滤波器;以及
将至少两个触发器耦合到所述施密特触发器,其中,所述至少两个触发器中的一者的输出指示所述流水线的状态。
20.根据权利要求19所述的方法,其中,比较包括执行异或运算或者异或非运算。
21.根据权利要求19所述的方法,包括:通过所述施密特触发器的输出来设置或复位所述至少两个触发器的输出。
22.根据权利要求19所述的方法,包括:将所述至少两个触发器的时钟端子耦合到所述读时钟以指示所述流水线的空状态。
23.根据权利要求19所述的方法,包括:将所述至少两个触发器的时钟端子耦合到所述写时钟以指示所述流水线的满状态。
CN202010999677.6A 2019-11-26 2020-09-22 时钟交叉fifo状态收敛同步器 Pending CN112860216A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962940729P 2019-11-26 2019-11-26
US62/940,729 2019-11-26
US16/995,638 US11741024B2 (en) 2019-11-26 2020-08-17 Clock crossing FIFO status converged synchronizer
US16/995,638 2020-08-17

Publications (1)

Publication Number Publication Date
CN112860216A true CN112860216A (zh) 2021-05-28

Family

ID=75974923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010999677.6A Pending CN112860216A (zh) 2019-11-26 2020-09-22 时钟交叉fifo状态收敛同步器

Country Status (4)

Country Link
US (1) US11741024B2 (zh)
CN (1) CN112860216A (zh)
DE (1) DE102020129577A1 (zh)
TW (1) TW202139020A (zh)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542987B1 (en) * 1999-02-01 2003-04-01 Hewlett-Packard Development Company L.P. Method and circuits for early detection of a full queue

Also Published As

Publication number Publication date
DE102020129577A1 (de) 2021-07-01
US20210157750A1 (en) 2021-05-27
US11741024B2 (en) 2023-08-29
TW202139020A (zh) 2021-10-16

Similar Documents

Publication Publication Date Title
US11211935B2 (en) All-digital voltage monitor (ADVM) with single-cycle latency
US11973504B2 (en) Multi-reset and multi-clock synchronizer, and synchronous multi-cycle reset synchronization circuit
US20210405732A1 (en) Usb type-c subsystem power management
WO2021040947A1 (en) Low power clock gate circuit
US11398814B2 (en) Low-power single-edge triggered flip-flop, and time borrowing internally stitched flip-flop
CN113835517A (zh) 快速动态电容、频率、和/或电压节流装置和方法
CN113826326A (zh) 维持稳定计时的装置和方法
US20140310549A1 (en) FIFO Clock and Power Management
US11757434B2 (en) High performance fast Mux-D scan flip-flop
CN112860216A (zh) 时钟交叉fifo状态收敛同步器
US11791819B2 (en) Low power flip-flop with reduced parasitic capacitance
CN113625859A (zh) 智能预测处理器空闲时间的装置及方法
US11054470B1 (en) Double edge triggered Mux-D scan flip-flop
CN113841200A (zh) 基于抑制的存储器刷新改进电池寿命
US20220278675A1 (en) Low power sequential circuit apparatus
US20230108736A1 (en) Techniques for identification and correction of clock duty-cycle
US20230198568A1 (en) Antenna switching system
US11790978B2 (en) Register file with write pre-charge
US20240007087A1 (en) Integrated clock gate with circuitry to facilitate clock frequency division
US20220083093A1 (en) Device, system and method to detect clock skew
US20230396249A1 (en) Device, system and method to provide adaptive clock modulation with delay line circuits

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination