一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在地址流中嵌入数据的制作方法

2022-12-06 23:44:13 来源:中国专利 TAG:

在地址流中嵌入数据


背景技术:

1.正在开发存储器装置的新设计以实现更快、更便宜或更可靠的计算。为了确保新存储器设计将按预期运作,对存储器设计进行测试。例如,当评估新存储器设计时,分析耦合到存储器装置的存储器总线的信号迹线可能有所帮助。测试设备将物理探针附接到存储器总线上的引脚或导线且将输入提供到在存储器测试期间记录出现在存储器总线上的信号的逻辑分析器。经记录信号可输入到模拟器以供重放新存储器设计如何响应于在所述测试期间提出的存储器请求而运作。然而,随着存储器装置变得更复杂,这个测试过程变得更具挑战性。
附图说明
2.在本文档中参考以下附图描述将数据嵌入地址流中的一或多个方面的细节。贯穿所述附图使用相同数字来指代类似特征及组件。
3.图1说明本文档中所描述的各种技术及装置可在其中操作的实例计算机。
4.图2-1及2-2各自说明其中由实例地址流中的数据引用邮箱的实例方案。
5.图3说明经配置以发送嵌入地址流中的数据的另一实例计算机。
6.图4说明实现使用错误检测校验和来识别数据的实例地址流。
7.图5-1及5-2说明本文档中所描述的各种技术及装置可在其中操作的额外实例环境。
8.图6说明由经配置以将数据嵌入地址流中的计算系统执行的实例操作。
9.图7说明由经配置以提取嵌入地址流中的数据的系统执行的实例操作。
具体实施方式
10.概述
11.描述用于将数据嵌入互连件,例如计算机的存储器总线上的地址流中的技术及装置。在此,可使传达地址流的物理线传达数据,所述数据散布在地址流的位当中或通过地址流的位引用。互连件的地址线可专用于或选择性地用来传播地址流(例如,以在地址流与数据流之间共享的时分方式)。地址流的位通常递送用于执行读取或写入操作的地址(例如,存储器页面及偏移);然而,在其执行期间待读取或写入的数据是通过数据流单独地传达,所述数据流可在与地址流不同的物理线上。为了避免在跟踪地址流及任何命令线的同期跟踪数据流的复杂性,地址流经配置以偶尔携带数据,接着可将所述数据自动地记录为地址流的迹线的部分。从这个额外、逻辑数据通道内检测到的数据可用来增强存储器迹线中获得的地址及其它信息,例如以执行函数或确定数据及控制相依性,即使在不监控数据流的情况下也是如此。
12.程序或系统状态、线程识别符或过程识别符、指令或程序计数器及函数或任务识别符是可直接嵌入地址流中的数据的一些实例。为了通过地址流间接传达经嵌入数据,这个数据可包含指向邮箱或存储器的其它部分的指针或引用,所述邮箱或存储器的其它部分
是出于通过地址流传达数据的目的而分配。
13.考虑测试工程师或技术人员通过信号迹线分析及存储器系统模拟评估计算机的存储器。主机或存储器装置处执行的软件仪器可将存储器迹线输出到数据文件。替代地,附接到命令线或地址线的物理探针可用来将信号发送到接收者,所述接收者将地址流的信号记录为迹线,然而通常不记录对应数据流。存储器迹线的接收者可为程序、逻辑分析器、例程、片上系统(soc)或其它组件或实体。从探针或软件仪器接收的输出可由接收者与时间戳相关联地记录。经记录信号或数据文件可馈送到存储器系统模拟以供后续回放及信号迹线分析。所述模拟对命令线及地址流的回放可深入了解存储器设计在连接到计算机主机时如何执行。
14.现存逻辑分析器或经探测信号的其它接收者具有有限数目个输入通道。产生完整的存储器迹线,包含地址流以及对应数据流(如果可能的话)将需要复杂的逻辑分析器、过多的探针及大量的存储空间。通过检查数据流可发现有用的控制相依性;然而,由于接收者探测或监控的限制,在跟踪地址流及控制线的同时跟踪数据流可能是不可行的。忽略数据流是一种用来缩减执行信号迹线分析的成本及复杂性的方式。不幸的是,在没有数据流的情况下,在模拟回放期间无法发现一些数据或控制相依性。此外,计算机系统通常运行多个程序(例如,应用程序、过程)及具有交错的存储器活动的线程。因此,在没有有关数据以及出现在存储器总线上的存储器活动的地址的上下文的情况下,难以将软件事件与存储器活动精确地关联起来。
15.本文中所描述的实例计算系统将数据直接注入到地址流中或通过将数据指示注入地址流中来间接进行。所述数据可为在那个时间点出现在地址流内的地址提供上下文。可记录上下文以供后续回放及/或分析期间使用,而不需要额外仪器、探针、线、导线、引脚或其它硬件,除了已用来监控地址流的硬件以外。所述数据还可用来将其它信息,例如来自主机装置处执行的程序的消息递送到存储器装置或地址流的其它接收者,而无需修改硬件。所述数据可用来递送控制相依性,所述控制相依性例如可用来产生更准确的模拟。当在地址总线的现存地址导线上输出时,经嵌入数据可用来证实新存储器或以地址无法实现的方式控制存储器。因而,尽管通常地址流仅包含地址,但计算系统经配置以直接或间接且根据本文中所描述的某些原理偶尔将数据嵌入其地址流内。
16.实例系统包含通过互连件连接到存储器装置的主机装置。主机装置通过互连件定期发送信号,例如通过在地址及控制线上传输地址流及控制命令,及通过在数据线上传输对应数据流。主机装置通过地址流发送数据指示,所述地址流在逻辑分析器或其它接收者看来如同存储器总线上的任何其它地址。主机装置将数据输出到隐藏通道上,所述隐藏通道在概念上覆盖在地址线且散布在地址流中。
17.探测地址线以跟踪地址流同样会跟踪主机装置通过隐藏通道发送的数据。因而,当被监控时,以与留存隐藏通道外的地址相同的方式跟踪隐藏通道内的数据或数据指示。对于地址流的接收者来说,这个经嵌入数据可为调试或确定系统如何执行提供上下文或线索。根据所述数据,可从地址流的迹线识别通常在没有跟踪或理解对应数据流的情况下无法发现的控制或数据相依性。
18.经嵌入数据可补充或增强存储器系统模拟。例如,监控地址流的逻辑分析器可基于从地址流获得的数据来控制功能(例如,警报或警示)。在回放期间,所述模拟可从存储器
迹线省略与数据相关的存储器流量,前提是期望所述省略以隐匿(例如,从分析器)在地址流中传达数据。可排除在信号迹线分析及模拟回放期间揭露的存储器流量以防止不正确的模拟回放;可在回放之前从存储器迹线减去引用经嵌入数据的存储器流量。虽然可从地址流的经模拟回放省略从地址流提取的数据,但所述数据可与地址流的地址一起输出,这可改善存储器系统模拟的保真度。然而,使用本文中所描述的技术及装置通过地址流发送数据不限于改善存储器系统模拟。
19.所述技术及装置另外或替代地允许数据在任何时间且出于任何原因嵌入地址流中,而不仅仅是为了支持测试及评估。例如,一些存储器架构指定专用输入及输出通道以通过主机装置与存储器装置之间的存储器总线传递跟踪信息。其它存储器装置可提供获得由主机装置写入的上下文数据,例如被存储器装置用来完成存储器操作的预取提示或不可高速缓存地址旗标的内部寄存器。尽管两种技术均实现数据通信,但也增加系统硬件的复杂性,其可极大地增加成本。相比之下,实例计算系统的主机装置可在存储器总线的地址线上递送数据,包含每当物理边带通道或对数据流的存取不可用时。
20.如所提及,数据可直接或间接注入到地址流中。通过致使主机装置调用软件库函数,可在地址流内直接传达数据,所述软件库函数自动地操纵正在存储器总线上发送的地址,因此所述地址递送数据指示。软件库可包含初始化函数,所述初始化函数在由主机装置调用时向地址流的接收者(例如,存储器装置)发送有关数据(如果嵌入的话)将何时或如何出现在地址流中的信息。初始化可能不是必需的;然而,可通过初始化,在一些场景中通过当数据出现在地址流中时有效地引导接收者辨识数据来改善性能。在初始化之后,主机装置可调用软件库的发送消息或发送分组函数以将作为参数输入到所述函数的数据嵌入地址流中。替代地,主机装置可使用所描述技术及方法以使用嵌入地址流中的数据来将命令或其它信息传达到存储器装置。
21.嵌入地址流中的数据指示本身可表示信息或元数据位,所述信息或元数据位似乎是地址,但未被引用为邮箱位置。然而,如果使用邮箱,那么程序可将存储器区预先分配为邮箱且与存储器装置、逻辑分析器或经嵌入数据的其它接收者共享邮箱位置。以这种方式,在接收者与主机装置之间不需要任何前期协调。代替地,每当在地址流内识别到已分配邮箱中的地址时,接收者就处理由于对邮箱的引用而嵌入的偏移位数据。因为邮箱的存储器是由程序私人分配及拥有的,且因为邮箱的大小可能很小且仅含有存储器中的一个或几个页面,所以在邮箱内将不可能存在任何干扰或意外的存储器请求。例如,通过建立邮箱及/或使用校验和进行通信(如下文所描述),任何程序可为应用程序特定数据建立可靠且私人的邮箱。
22.将数据直接嵌入地址流内可有效地将数据从主机装置传输到接收者。主机装置的处理器或存储器控制器,或存储器装置的组件可作用于通过地址流传达的数据上,例如通过指导高速缓存、预取器或计算机的其它硬件或通过执行存储器中处理(pim)操作。如果探测地址流,那么不需要单独的物理测试探针来提取经嵌入数据。接收者可包含辨识出现在地址流中的数据的传输的逻辑。通过监控存储器总线的地址部分,所述逻辑可响应于识别特定地址模式而识别数据,所述地址模式并非由测试程序发起。
23.用来通过地址流嵌入数据的另一方式是间接嵌入数据,例如通过建立邮箱。使用邮箱会增加隐藏通道的通量,因为与直接嵌入数据的情况相比,可在更短的时间量内或在
更少的存储器总线周期内经由邮箱递送更多数据。为了将数据间接嵌入地址流内,程序可致使主机装置为邮箱分配等于预期大小(例如,4千字节页面)的存储器的连续部分。所述程序可在特定窗口(例如,基于地址条目传输时间或次数的窗口)内,在地址流中重复地址(例如,具有一或多个偏移的页面地址)模式,以指示邮箱在哪里被指定用于未来的数据传输。当所述模式出现在所允许窗口内的地址流中时,存储器或地址流的其它接收者自动地确定引用含有邮箱的一或若干存储器页面的所有后续地址均是由所述程序嵌入的数据指示。例如,地址流可携带引用邮箱的位且包含具有经嵌入数据的偏移位,而不是地址。通过在地址流内检测邮箱位置(例如,地址的页面及/或偏移)且将相关联偏移提取为经嵌入数据,可从邮箱获得经嵌入数据。然而,在一些实例计算系统中,邮箱可能不是必需的。
24.任选地,嵌入地址流中的数据指示可包含伪装成用来递送数据或数据指示的地址模式内的地址中的一者的校验和。校验和使接收者能够确定例如当数据指示的传输需要地址流的多个存储器周期时对所述数据的部分的正确顺序。在基于主机装置及/或存储器装置的存储器控制器管理存储器总线的方式来更改顺序的情况下,对部分进行重新排序的能力是有帮助的,所述部分中的每一者可能超出发送者程序的控制。如果地址流内的地址群组中的地址的组合不可被排序以满足等于所述群组中的剩余地址的校验和,那么校验和失败。在其中重新排序的可靠性或可能性几乎不是问题的一些实例计算系统中,校验和可能不是必需的。
25.本文中还描述可独立于或组合邮箱及校验和实施以递送嵌入地址流内的数据指示的消息接发协议。消息接发协议包含前导码或后同步码消息,所述前导码或后同步码消息中的任一者可与识别邮箱类似地从地址流中的地址的重复模式识别。前导码或后同步码消息绑定所述程序的数据指示,其表现为跨地址流的一或多个存储器周期分布的有效载荷消息。前导码消息表示有效载荷消息的标头或起始,而后同步码消息递送有效载荷消息的结束或尾部。由所述程序执行的不可高速缓存字节读取或写入指令可致使与前导码或后同步码消息相关联的重复模式在地址流内可被识别为地址之间的预定义地址分布或预定义增量分布(例如,地址间差异)。
26.有效载荷消息包含对数据指示进行编码的地址序列。在前导码消息之后且在后同步码消息之前(如果使用其中的一者或两者),属于有效载荷消息的地址序列出现在地址流中。这些地址序列并不常见;作为一系列常规存储器请求的部分,每一地址序列几乎没有机会出现在存储器总线上。独特的序列因此可容易被地址流的接收者,例如存储器装置或迹线读取器程序检测到。如所提及,可例如由存储器控制器在存储器总线上对构成有效载荷消息中的序列的地址进行重新排序。如果有效载荷消息包含校验和,那么可获得正确的地址序列,从所述校验和可导出正确的地址顺序。
27.消息接发协议可使用邮箱来支持通过地址流的间接数据通信。引用邮箱使发送者能够通过不断重复前导码或后同步码消息来避免浪费存储器周期。程序可将数据的有效载荷直接嵌入地址流内的地址偏移位,例如包含一或多个最低有效位(lsb)内。代替实际数据的是,有效载荷可表示经引用以传达所期望数据的邮箱的指针(例如,存储器的物理页面的地址)。如果使用前导码及后同步码消息两者,那么程序可在发送前导码与后同步码消息之间输出具有邮箱指针的有效载荷消息。迹线读取器程序、存储器装置或地址流的其它接收者因此可从有效载荷确定分配给邮箱的程序的存储器页面。后续有效载荷消息,即使在没
有前导码或后同步码消息的情况下,也可自动地引用邮箱页面以触发接收者通过从存储器的邮箱页面内的偏移提取位来间接识别数据。
28.在一些情况下,程序在运行时间将数据写入到邮箱以与接收者进行通信。当邮箱页面出现在地址流中时,地址流的接收者从邮箱获得数据。一旦建立邮箱,就可监控邮箱,而无需传达及解释前导码或后同步码消息的开销。监控地址流的装置可响应于从地址流识别邮箱内的地址(例如,存储器页面的地址)而触发作用于经嵌入数据上的内部函数。
29.使用预定邮箱,而不是通过消息接发协议建立邮箱,使发送者及接收者能够更快地开始对经嵌入数据进行编码及解码。预先确定邮箱避免必须交换前导码消息或后同步码消息,所述前导码消息或后同步码消息中的任一者可在地址流中的任何位置,并且与许多其它不相关的存储器请求交错。预先确定已分配给程序的邮箱对于一些系统来说可能是简单且有效的;然而,其它实例系统可通过使用消息接发协议将每一数据有效载荷与前导码或后同步码绑定来进一步提高稳定性、可靠性及安全性。
30.无论是提前还是通过消息接发协议建立,一旦确定邮箱的位置,就可通过存取(例如,读取或写入)邮箱的页面或其它存储器位置来从地址流检索数据。例如,4千字节大小页面的地址的lsb在为存储器迹线记录的地址流的每一地址中可含有多达12位数据。存储器(例如,dram dimm)数据传送(有时被称为“突发”)的最小大小可为六十四(26)个字节。在读取或写入操作期间,可不会在存储器总线上传达用于突发的这六个lsb。对于写入操作,可通过监控写入字节掩码位以恢复lsb来识别邮箱。或如果使用读取,因为每一页面可为2
12
个位,所以每一偏移每次读取可传达六(即,十二减六)个数据位。
31.因为可期望利用8位校验和来工作,以便在计算机系统中对其进行编码或解码,一些实施方案可使用大于4kb页面的邮箱大小(例如,四倍)来减少用来识别邮箱的位数目且将用于有效载荷的位数量增加两个位,即,log2(4)。为了实现8位校验和,每页面存储器的4千字节的四个页面可用作大小为16kb的邮箱。由16kb邮箱产生的有效载荷消息是邮箱内的8位“字节大小”偏移,无论给定偏移是含有所期望数据还是校验和,在此类实施方案中所期望数据及校验和中的任一者均可为8个位。因此,分配在大小上比单个4kb页面更大的邮箱可增加可用于递送经嵌入数据的偏移位数目,且如此做可确保有效载荷消息中的每一数据项或校验和可占用所期望数目个位,例如一字节。
32.实例环境
33.图1说明本文档中所描述的各种技术及装置可在其中操作的实例计算机100。计算机100包含主机装置102(其具有一或多个处理器104及至少一个存储器控制器106),及存储器装置108(简称为“存储器108”)。在一些实例中,存储器控制器106可为一或多个处理器104的方面,且可驻留在一或多个处理器104上或内。计算机100进一步包含互连件110,所述互连件110可被实施为例如存储器总线110。计算机100可为可利用用于将数据嵌入地址流中的通道的任何类型的计算装置、计算设备、计算系统或电子装置。
34.如所展示,主机装置102及存储器装置108各自耦合到存储器总线110。因此,主机装置102及存储器装置108经由存储器总线110彼此耦合。处理器104执行致使主机装置102的存储器控制器106在存储器总线110上发送信号的指令。主机装置102经配置以在存储器总线110上传达的地址流内发送数据指示,例如如稍后所描述的前导码消息、后同步码消息、有效载荷消息等。这种通信可包含作为地址流112的部分通过存储器总线110发送的地
址以及数据指示。换句话说,数据是指除(读取或写入)存储器请求的存储器地址以外的信息。因此,数据指示包含任何机器或人类可辨识特征,其出现在地址流112中以递送数据,尤其是除地址之外的数据以支持读取或写入存储器请求。
35.因此,存储器总线110可包含或提供用于地址流112或数据流114或两者的管道。地址流112包含地址导线群组或可使用地址导线群组来实现,且数据流114可涵盖存储器总线110的不同导线群组,在本文中被称为数据导线。存储器总线110可包含额外的有线或无线连接件;例如,有线或无线控制总线可携带在主机装置102与存储器108之间交换的状态或命令信号。替代地,互连件或存储器总线110可至少部分地通过相同物理导线或若干相同物理导线传播地址流112及数据流114两者。作为一些实例,互连件110可包含前端总线、存储器总线、内部总线、外围控制接口(pci)总线等。如果互连件或存储器总线110包含命令总线或传播命令流,那么主机装置102也可或代替地通过命令总线或命令流传播数据。
36.处理器104执行程序116且通过存储器控制器106读取及写入存储器108。执行程序116配置主机装置102的处理器104及存储器控制器106以在地址流112中且在与存储器108共享的存储器总线110上传达数据122。处理器104可包含或可为计算机的:主机处理器、中央处理单元(cpu)、图形处理单元(gpu)、人工智能(ai)处理器(例如,神经网络加速器),或其它硬件处理器或处理单元。
37.存储器108被说明为计算机100的存储器;然而,存储器108可集成在主机装置102内或与计算机100分开及/或可为各种类型。例如,仅举几个例子,存储器108可包含集成电路存储器、动态存储器、随机存取存储器(例如,dram、sram)或快闪存储器。具有可识别物理存储位置的任何可寻址存储器均可用作存储器108。此外,尽管主机装置102及存储器装置108被描绘为离散组件,但主机装置102、存储器装置108及互连件110可替代地集成在单个裸片上(例如,作为soc)。
38.被称为程序116的模块以及本文中所描述的任何其它模块可存储在计算机可读媒体或计算机100的其它硬件组件中。每一模块(包含程序116)表示一组处理器可执行指令,包含软件指令、固件指令或其组合。
39.响应于处理器104执行定义程序116的指令,主机装置102经配置以在存储器总线110的地址流112中传达数据122,所述地址流是在至少存储器108与主机102之间共享。例如,作为在存储器总线110上的存储器流量的第一帧期间发出的常用存储器写入或读取命令的部分,程序116致使处理器104及存储器控制器106在数据流112中输出地址118且在数据流114内输出数据120。数据120可指示存储器108将什么存储在地址流112中包含的地址118处,且替代地,对于读取,数据120可指示存储器108在所述地址流中指定的地址中读取什么。存储器108通过将数据流114上接收的数据120存储在由地址118定义的存储器108的存储位置中来执行写入或读取命令。
40.在一些实施方案中,在接下来所描述的存储器总线110上的后续流量帧中,程序116指导处理器104及存储器控制器106在地址流112输出数据122。存储器108或(如稍后所描述)计算机100内部或外部的逻辑分析器经配置以确定在存储器108与主机装置102之间通过地址流112传达的数据122。数据122不被解释为用于读取或写入命令的存储器地址,地址118及数据120就是这种情况。代替地,数据122表示信息的有效载荷、(在一些情况下)元数据或待通过其传达信息(例如元数据)的邮箱位置。
41.响应于检测到数据122,存储器108可使用数据112来执行功能,例如pim操作。嵌入地址流112内的隐藏通道因此提供主机装置102的存储器控制器106与存储器108之间的额外通信路径。当馈送到用于处理地址流112的存储器模拟器或其它平台中时,数据122可致使存储器模拟器或其它平台例如在回放及迹线分析期间输出或显示数据122的指示。工程师或测试人员可考虑数据122以辅助解释存储器总线110上的信令的迹线或与程序116的部分相关联的存储器问题。模拟器或其它处理平台(包含程序116)可使用数据122来确定存储器请求之间的数据或控制相依性,这可实现更准确的模拟输出。
42.数据122可包含程序上下文指示,例如线程识别符(tid)或指向更长线程识别符的指针。程序116可将线程识别符作为数据122注入到地址流112内的隐藏通道中。例如,线程识别符对涉及地址118及数据120的先前存储器请求进行分类,所述存储器请求较早地出现在所述迹线中。替代地,线程识别符可先于地址流112中的相关存储器请求。作为程序116的功能,程序116可定期指导处理器104发送数据122。当以操作系统级别实施时,计算机100的操作系统可指导主机装置102发送关于过程上下文的每一变化或每一线程上下文切换的数据122。数据122可在存储器总线110上的初始帧中与处理器104的第一线程或第一cpu核心相关联,且在后续帧中,数据122可源自处理器104的不同线程或不同cpu核心。当主机装置102包含高速缓存时,触发回写的处理器104的线程或cpu核心可能与上次存取数据的处理器104的线程或cpu核心不同。相比之下,在数据122的传输之前,由最新近的读取操作触发存储器读取。递送线程或过程识别符的能力使模拟器或其它程序能够通过其相应输出指示并行执行来自不同线程的请求,而模拟器或其它程序无需跟踪相依性。
43.包含由程序116发出的字节加载及字节存储(例如,不可高速缓存的、输入输出)可指导主机装置102的处理器104在精确时间或在特定帧内经由存储器控制器106将数据122发送到存储器108。相对于存储器迹线中记录的其它存储器存取,可使用存储器围栏技术来将数据122准确地定位在存储器迹线内。存储器围栏内发出的操作肯定由处理器104及存储器控制器106在存储器围栏外发出的操作之前执行。程序116可包含或为经配置以将元数据作为数据122注入地址流112中的任何仪器、软件库或其它类型的模块。替代地,主机装置102的硬件电路系统可将数据122注入到地址流112中。
44.在操作中,每当程序116切换到新线程时,程序116可将线程识别符注入到存储器总线110上的地址流112中,所述线程识别符出现在被探测的地址迹线中。接收线程识别符的存储器108、其它程序或迹线分析器确定在主机装置102的处理器104上执行的哪个线程正在为随后的存储器操作产生地址。线程识别符连同其它类型的数据122一起是上下文的实例,其提供更丰富的迹线,因为所述迹线的个别区段可与不同线程相关联。这个线程识别符或其它数据122可在参考图2-1及2-2所描述的有效载荷消息之前、之后或作为有效载荷消息的部分出现在存储器总线110上。
45.邮箱通信及消息接发协议
46.图2-1及2-2说明地址流内的通信的方面,其中邮箱被地址流中的数据引用。图2-1说明邮箱通信,其涉及通信程序使用重复传输来提前为邮箱分配存储器。图2-2说明消息接发协议,其利用前导码、有效载荷及/或后同步码消息来将数据从地址流的一端递送到另一端。在图2-1及2-2的实例中,从时间0到时间t,时间沿向下方向流逝。
47.默认情况下,(图1的)存储器108将地址流112-1中的信息位视为用于存储器请求
的地址118。主机装置102的处理器104及存储器控制器106经配置以在与存储器108共享的地址流112-1中传达地址118。存储器108使用所述地址来读取、写入或以其它方式执行存储器108的存储器操作。
48.在一些实施方案中,地址流112-1可遵守分离事务协议。分离事务协议允许存储器控制器106及存储器108以非原子方式执行加载及存储指令群组,而程序116或处理器104不必管理其执行。利用分离事务协议来操作存储器可促进高效的存储器存取。
49.首先转向图2-1,其说明在程序116将数据122-2、122-3或122-4嵌入地址流112-2之前在预先分配的存储器108的一部分中建立的实例邮箱200。地址流112-1及112-2是地址流112的实例。程序116致使计算机100将邮箱200分配为存储器108处的连续存储量。邮箱200可等于存储器中的一页面或存储器的多个页面的大小以增加偏移的大小且由此增加带宽或改善校验和性能。为了建立邮箱200,程序116致使主机装置102在窗口208内发送地址流112-1中的地址的重复模式(n个周期)。窗口208可被建立为具有特定时间长度(例如,时间窗口)或具有地址流112-1的特定数量的地址条目。每一重复模式中的一个地址可表示用于确定所述重复模式中的剩余(在这个实例中两个)地址的顺序的校验和。剩余地址在按满足校验和的特定顺序级联在一起时定义用于邮箱200的页面或页面范围。尽管两个所描绘周期的地址被说明为在时间上邻近,但所述地址可替代地通过其它地址,包含具有用于存储器请求的地址的地址或具有伪装成用于存储器请求地址的数据的地址分开。
50.响应于在地址的所允许窗口208内检测到具有对应校验和的两个或更多个地址条目的n次重复,且很少有或没有散布或虚假的其它地址,检测地址流112-1中的重复模式的存储器108、逻辑分析器或其它接收者确定邮箱200在程序116的持续时间内专用于程序116。这允许程序116为应用程序特定数据建立私人邮箱。这可比使用图2-2中所描述的前导码、有效载荷及/或后同步码消息更简单,因为可避免前导码或后同步码辨识方案,同时仍由主机装置102处置地址重新排序,其可能使邮箱难以解码。
51.如图2-1中所展示,地址流112-2的接收者可基于引用邮箱200的后续存储器请求来解释数据122-2、122-3及122-4。因为在由程序116拥有的存储器108的私人分配部分内含有邮箱200,所以在分配给邮箱200的地址范围内不可能存在对邮箱200的干扰或意外寻址。
52.作为建立具有重复传输的邮箱200的替代方案,图2-2展示可如何使用消息接发协议来指示邮箱200的位置。在处理地址流112-3(其连同地址流112-4是地址流112的实例)时,接收者可根据已识别前导码消息202、后同步码消息206及/或其间的有效载荷消息204来确定邮箱200。地址流112-3传播或携带数据122-5,所述数据是数据122的实例。地址流112-3提供邮箱200,且随后出现的地址流112-4引用邮箱200来传达额外数据122-6及122-7,作为数据122的进一步实例。
53.在操作中,存储器108确定地址流112-3的当前部分包含数据122-1的指示而非地址。响应于确定地址流112-3的当前部分包含地址118且不包含嵌入其中的数据,存储器108执行读取或写入以利用地址流112-1的当前部分中所含的地址118来履行存储器请求。
54.相比之下,当数据122-1的指示出现在地址流112-3中时,存储器108对地址流112-3的解释与对地址流118的解释不同。基于数据122-5出现在地址流112-3中,存储器108-1可确定存储器请求的上下文或待执行的命令,而不是确定与存储器请求相关联的地址页面或偏移。响应于确定地址流112-3的当前部分包含数据122-5,存储器108可忽略数据122-5。替
代地,存储器108可从地址流112-3的当前部分提取数据122-5以执行命令或保存数据122-5以作为测试场景的部分输出,这将参考图5进行描述。尽管本文中的一些描述涉及存储器108或108-1,但当所述装置在操作或测试期间处理地址流112或基于检测到的数据122来采取行动时,这些描述也可或代替地适用于由正在处理地址流的逻辑分析器或测试设备(例如,在测试结束之后离线)执行的动作。
55.为了在地址流112-3内递送数据122-5,处理器104通过存储器控制器106的作用,按任何顺序传达有效载荷消息204,及任选地前导码消息202及/或后同步码消息206。如果输出前导码消息202或后同步码消息206,那么主机装置102在传达有效载荷消息204之前输出前导码消息202,所述有效载荷消息通常先于后同步码消息206。然而,作为按高效地存取不同存储卡、存储体或模块的顺序发出存储器请求的方案的部分,存储器控制器106可对地址流112-3内的消息202、204、206进行重新排序。因此,存储器总线110可在传输任选的前导码或后同步码消息202及206之前或之后将有效载荷消息204递送到存储器108。然而,存储器108可识别前导码消息202、有效载荷消息204及后同步码消息206,无论在地址流112-3中出现的顺序如何。响应于识别前导码消息202,存储器108将有效载荷消息204解释为含有数据122-5或是数据122-5的至少部分。存储器108响应于识别后同步码消息206而确定数据122-5的结束。
56.主机装置102通过输出前导码消息202来指示有效载荷消息204的开始或标头。前导码消息202在时间0出现在地址流112-3中且警告存储器108有效载荷消息204的起始。
57.为了确定地址流112-3包含有效载荷消息204,存储器108可寻找前导码消息202。前导码消息202是跨多个地址步距的重复地址序列。主机装置102将前导码消息202的地址重复地(例如,数百次)传达(例如,放置或驱动)到存储器总线110上。存储器108,或计算机100的逻辑分析器或用于离线执行的存储器模拟场景的自动测试设备(ate)响应于辨识某个滑动地址窗口(图2-2中未展示)内的重复地址序列而识别前导码消息202。在一些情况下,前导码消息202中的地址模式是从地址之间的增量,而不是地址本身的绝对值导出。每一地址增量(也被称为地址间增量)是两个地址之间的差异。总之,数据122-5在地址流112-3内作为存储器108或逻辑分析器经编程以辨识的地址或地址间增量的预定模式进行传送。在一些实例中,所述预定模式是地址的统计分布,所述地址一起被解释为前导码消息202。
58.在实例操作中,存储器108经配置以通过识别地址流中的地址的偏移模式来确定地址流112-3包含前导码消息202。在图2-2中,前导码消息202中的偏移模式包含偏移[1、3、2、4]。存储器108响应于识别地址流112-3中的此偏移模式而辨识前导码消息202。响应于确定地址流112-1包含前导码消息202,存储器108检测或确定有效载荷消息204的存在。
[0059]
为了改善在地址流112-3内传达数据122-5的可靠性,前导码消息202中的偏移模式可对指示前导码消息202的增量模式进行编码。增量模式中的每一增量是地址流112-3中的偏移对之间的地址间差异或增量。在图2-2中,前导码消息202中的增量模式包含[ 2、-1、 2]。存储器108可响应于识别增量模式而辨识前导码消息202。
[0060]
在地址流112-3中的数据122-3的后续传达期间,存储器108可基于先前包含在前导码消息202中的相同或不同偏移模式来识别相同增量模式[ 2、-1、 2]。例如,存储器108可辨识地址流112-3的后续部分中的前导码消息202,地址流112-3的后续部分中的偏移对与先前前导码消息202中的偏移对[1、3、2、4]相同或不同。如果与先前偏移对不同,那么包
含在前导码消息202中的偏移对可再次对对应于[ 2、-1、 2]的增量模式进行编码以指示有效载荷消息204的开始。
[0061]
为了补偿可由存储器控制器106执行的存储器总线110上的未知重新排序,存储器108可识别前导码消息202中的偏移对之间的特定偏移或增量比率。例如,对应于[ 2、 2、-1]的增量模式可被认为与在给定大小的地址窗口内包含[ 2、-1、 2]的增量模式相同。同样地,可使用特定偏移比率而不是增量来递送前导码消息202。例如,存储器108可识别对应于1、3、2及4的偏移的相等数量或分布。
[0062]
存储器108可试图识别偏移的数百次出现以识别单个前导码消息202。例如,计算机100或其操作系统在每一存储器页面中具有四千字节的地址范围。前导码消息202包含页面“a”内的绝对偏移(例如,[1、3、2、4])。存储器108可响应于识别页面“a”内的绝对偏移或地址流112-3的时间窗口内的绝对偏移中的每一者的相等数量来辨识前导码消息202。存储器108寻求在存储器总线110上的属于同一存储器页面的高密度地址。例如,相关的高密度地址引用单个页面“a”,且每一地址具有在前导码消息202中找到的绝对偏移中的一者。响应于识别所述绝对偏移中的每一者的足够数量以满足前导码消息202的模式,存储器108确定正在存储器总线110上的地址流112-3中传达数据122-5。
[0063]
存储器108无法以100%的确定性识别前导码消息202,但存储器108可能以接近(例如,99%)确定性检测到前导码消息202。存储器108可维持在上文所提及的滑动时间窗口内寻址的每个页面的列表。存储器108响应于识别具有高引用率及匹配前导码消息202的模式的大多数绝对偏移的页面而识别前导码消息202。
[0064]
在时间t之前且在地址流112-3内传达有效载荷消息204之后,处理器104致使存储器控制器106在存储器总线110上将后同步码消息206作为地址流112-3的部分进行传达。处理器104输出后同步码消息206以指示有效载荷消息204的结束及用于这个事件的数据122-3的通信的结束。
[0065]
与主机装置102如何致使存储器控制器106传达前导码消息202类似,主机装置102在地址流112-3中传达后同步码消息206。例如,处理器104致使存储器控制器106将后同步码消息206作为存储器108中的共同页面的一系列连续地址而输出,所述系列包含地址流112-3中的绝对偏移或增量的特定模式。响应于确定地址流112-3包含后同步码消息206,存储器108确定数据122-5的通信的结束。
[0066]
响应于确定后同步码消息206,存储器108基于定义有效载荷消息204的偏移的内容来确定数据122-5,所述有效载荷消息是在地址流112-3中的后同步码消息206之前出现。在时间0与时间t之间,地址流112-3包含在存储器108内的单个页面“a”内的按时间排序的地址序列。数据122-5的地址可由主机装置102按由存储器控制器106从处理器104接收的顺序传输。替代地,存储器控制器106可对地址流112-3的地址进行重新排序或对存储器总线110上传输的地址进行加扰,此后例如可能是所述地址按顺序出现的相对长时段。当基于序列指示、校验和等等解释构成数据的地址时,存储器108可考虑所述地址的重新排序。
[0067]
存储器108通过识别对应偏移模式来确定地址流112-3包含后同步码消息206。在图2-2中,后同步码消息206中的偏移模式包含[5、3、9、1]。存储器108经配置以响应于识别这种偏移模式而辨识后同步码消息206。如上文关于前导码消息202中的偏移模式所论述,后同步码消息206中的偏移模式也可对增量模式进行编码。增量模式中的每一增量是后同
步码消息206内的偏移对之间的差异。为了改善在地址流112-3内传达数据122-5的可靠性,存储器108可响应于识别多个地址在地址流112-3中包含另一增量模式而辨识后同步码消息206。例如,在图2-2中,后同步码消息206中的其它增量模式包含[2、 6、-8]。
[0068]
在一些情况下,数据122-5的有效载荷消息204包含在前导码消息202之后且在后同步码消息206之前接收的地址流112-3的一部分。有效载荷消息204对构成存储器108中的页面“a”的地址的页面偏移的地址位内的数据122-5进行编码,所述页面“a”是前导码及后同步码消息202及206的地址中的相同页面“a”。因此,数据122-5可至少对应于有效载荷消息204的(若干)偏移部分的实际位内容。在一些实例中,数据122-5包含参考地址流112-4所描述、指示在传达未来数据122时可引用的位置的邮箱200。
[0069]
在有效载荷消息204内,主机装置102可传达邮箱位置,所述邮箱位置可包含存储器108中的经引用以高效地传达未来数据122的页面。例如,邮箱200可对应于经引用以传达数据122-6及122-7的存储器108的页面地址。因此,邮箱200还可用来向存储器108或迹线分析器指示额外数据,例如数据122-6或122-7。主机装置102将邮箱位置作为在有效载荷消息204内传输的地址位进行传达。以这种方式,有效载荷消息204可包含实际数据122-1及/或对待传达到存储器108的未来数据122-6或122-7的位置的引用。
[0070]
基于在前导码消息202之后接收的地址流112-4的部分,存储器108识别邮箱200的邮箱位置。基于有效载荷消息204,存储器108将偏移解释为指示识别何时传达数据122-6及122-7的存储器108的页面的邮箱位置。出现在有效载荷消息204中的编号为[11、

、0]及[23、

、12]的偏移位被解释为用来建立邮箱200的引用,而不是存储器请求的可寻址偏移。在图2-2的实例中,存储器108确定数据122-6及122-7分别在地址流112-4中包含“1”及“3”。
[0071]
在时间0与时间t之间,地址流112-3包含单个页面“a”内的发送到存储器108的按时间排序的地址序列。为了便于描述,数据122-5的地址是由存储器控制器106在地址流112-3中按从处理器104接收的顺序传输。如关于其它附图所描述,地址流112-3可包含在存储器总线110上传输期间重新排序或加扰的地址,此后可能是其中所述地址按顺序出现的长时段。如下文所描述,当使用例如顺序相依校验和来解释构成数据的地址时,存储器108可考虑所述地址的重新排序。
[0072]
虽然数据122-5可表现为包含页面及偏移值的规则地址,但数据122-5的页面及偏移值递送用于存储器108的消息。在时间0,前导码消息202最初出现在存储器总线110上。前导码消息202先于有效载荷消息204。前导码消息202及有效载荷消息204之后是后同步码消息206,所述后同步码消息在时间t完成其在存储器总线上的传输。一旦前导码消息202停止,存储器108或逻辑分析器就可将存储器总线110上的地址解释为有效载荷信息。在图2-2的实例中,有效载荷消息204占用两个存储器周期。
[0073]
主机装置102可发送有效载荷消息204以初始化邮箱200以确定将如何指示未来数据122-6及122-7,而不仅仅是将数据122-5作为有效载荷消息204进行发送。有效载荷消息204中的地址对邮箱200的数据或指向所述数据的指针进行编码。在图2-2的实例中,有效载荷消息204包含编号为[11、

、0]及[23、

、12]的两个地址部分。当组合(例如,级联)时,所述两个部分为邮箱200建立存储器页面。如果存储器页面对应于存储器108的页面“p”,那么在邮箱200的页面“p”的地址偏移位内传达数据122-6及122-7。根据标准存储器请求,可忽略指向邮箱200的数据位。在主机侧,处理器104将存储器108的页面“p”分配给程序116以供
程序116专用以传达数据122-6及122-7,及潜在的额外数据。在初始化邮箱200之后,沿着地址流122到页面“p”的后续地址是对存储器108的位置的引用,其指示数据正在被传达且可被相应地解释或存储。
[0074]
图3说明经配置以发送嵌入地址流中的数据的实例计算机100-1。计算机100-1仅是计算机100的一个实例,且更详细地展示计算机100-1。计算机100-1包含计算机可读存储媒体302,所述计算机可读存储媒体可为非暂时性计算机可读存储媒体。主机装置102通过互连件304与计算机可读存储媒体302交换信息。计算机可读存储媒体302可至少部分地使用存储器装置108-1及/或主机装置102的部分来实现,或计算机可读存储媒体302可与主机装置102物理分开。
[0075]
计算机可读存储媒体302包含多个数据群组:一个群组被标记为用户空间310,且另一群组被标记为系统服务308。系统服务308提供可从用户空间310存取的应用程序,包含存取多种服务及函数,例如系统库模块314(也简称为“系统库314”)。例如,在图3中被展示为维持在用户空间310中的程序116可调用来自系统库314的系统函数或系统任务来代表程序116执行操作。用户空间310可包含用户库316。用户库316可由计算机100-1的用户定制且为从用户空间310内执行的应用程序提供对除由系统库314提供的服务及函数之外的额外服务及函数的存取。用户库316或系统库314可包含当被调用时使程序116能够在地址流112内发送经嵌入数据的函数。
[0076]
计算机100-1还包含主机装置102,所述主机装置包含一或多个处理器104及至少一个存储器控制器106。存储器总线110-1(其是存储器总线110的实例)在主机装置102的存储器控制器106与存储器108-1之间传播地址流112-3及数据流114。地址流112-3携带例如从主机装置102发送的前导码消息202、有效载荷消息204及后同步码消息206。存储器总线110-1还包含一或多个控制线306,所述控制线在主机装置102与存储器装置108-1之间来回携带控制信号。
[0077]
存储器108-1是存储器108的实例。任选的经嵌入数据接收器模块312包含在存储器108-1中。在实践中,可使用存储器装置108,所述存储器装置不一定包含任何硬件或软件修改,例如包含经嵌入数据接收器模块312。
[0078]
经嵌入数据接收器模块312确定地址流112-3包含地址或数据。响应于通过例如检测前导码消息202来识别数据,经嵌入数据接收器模块312配置存储器108-1以作用于数据上,而不是处理地址流112-3,就好像其含有在读取、写入或其它存储器请求期间通常在存储器总线110-1上观察到的地址的种类一样。
[0079]
经嵌入数据接收器模块312配置存储器108-1以基于有效载荷消息204来识别邮箱200,存储器108-1中的专用页面保留在所述邮箱中以指定数据。对于一些类型的数据,可使用多个邮箱位置来将不同类型的数据从主机装置102传输到存储器108-1。在此类情况下,经嵌入数据接收器模块312可基于有效载荷消息204来确定与不同邮箱位置相关联的数据的多个部分。另外或替代地,经嵌入数据接收器模块312可确定多少位与页面地址部分相关联及多少位与偏移地址部分相关联。基于这个信息,经嵌入数据接收器模块312可适当地解释不同大小的数据或将数据的多个部分级联在一起。因此,主机装置102及存储器108-1可交换不同大小或数量的数据。
[0080]
程序116可调用由系统库314或用户库316维持的函数以使程序116能够发送嵌入
地址流112-3中的数据。响应于函数调用,处理器104执行所述函数以请求存储器控制器106将存储器108-1的页面分配给程序116以维持邮箱200。程序116与库314或316对接以使用一或多个邮箱位置来传达数据。
[0081]
作为初始化的部分,库314及316致使处理器104在有效载荷消息204内传达所述一或多个邮箱位置。例如,有效载荷消息204内的偏移可指向邮箱的位置200,例如通过为邮箱200提供存储器页面的地址。程序116通过在不同时间读取或写入分配给程序116的存储器108-1的邮箱位置的页面地址来输出额外数据。例如,库314或316可致使处理器104在出现在地址流112-3上的后续有效载荷消息内将其它数据作为偏移输出到邮箱页面。
[0082]
作为一个实例,程序116可参考邮箱200的位置传达与程序116相关联的线程识别符。线程识别符可为相对长的且因此经由所述邮箱跨越多个地址偏移或地址输送以传达整个线程识别符。程序116可输出邮箱页面的指示,在函数调用中经由所述邮箱页面的指示将数据传达到系统库314。例如,邮箱位置可对应于分配给邮箱200的存储器108-1的页面的24位地址。程序116也可将数据提供到系统库314。
[0083]
响应于程序116的函数调用,系统库314产生前导码消息202。通过指导处理器104输出前导码消息202,系统库314警告存储器108-1的经嵌入数据接收器模块312监控有效载荷消息204的地址流112-3。经嵌入数据接收器模块312确定前导码消息202包含经插入以指示数据传输的偏移序列或模式。例如,前导码消息202可包含长地址序列中的特定偏移分布,经嵌入数据接收器模块312经编程以识别所述偏移分布。
[0084]
基于从程序116接收的有关邮箱位置的信息(数据将经由所述邮箱位置传达),系统库314产生有效载荷消息204。参考邮箱200的位置,有效载荷消息204可包含待传达的线程识别符或其它数据。所述数据可作为偏移插入出现在地址流112-3中的一系列地址中。包含在有效载荷消息204中的一系列地址中的共同页面识别符向存储器108-1处的经嵌入数据接收器模块312指示数据正在经由邮箱200传达。
[0085]
经嵌入数据接收器模块312获得由邮箱200识别且包含在地址流112-3的多个地址中的数据作为有效载荷消息204。通过将数据的多个部分级联在一起,经嵌入数据接收器模块312确定程序116的线程识别符。其它类型的信息,包含其它种类的程序执行上下文数据可替代地经由经建立邮箱200在地址流112-3上传达。虽然本文中的一些描述涉及经嵌入数据接收器模块312在操作或测试期间处理地址流112-3或基于检测到的数据来采取行动,这些描述也可或代替地适用于由正在处理地址流的逻辑分析器或测试设备(例如,在测试结束之后离线)执行的动作。
[0086]
使用经建立邮箱200允许在地址流112-3上高效地共享更大量的数据,因为正被传达的每条信息不需要前导码消息202。然而,在地址流112-3上传达数据不需要使用邮箱200。此外,不需要使用消息接发协议来在地址流112-3内传输数据或数据指示。相反,邮箱200可由主机装置102分配给存储器中的页面,使得每当地址流112-3(例如,存储器108-1)的接收者识别邮箱200被分配到的页面时,所述接收者将引用所述页面的地址解码为邮箱200中的数据的偏移。
[0087]
如上文所描述,在一些实例中,有效载荷消息204含有告知当前处理特性或相依性或指示存储器108-1执行一些功能的数据。代替提供如图2-1及2-2的地址流中所展示的邮箱位置的是,提供这个信息数据作为偏移地址。换句话说,有效载荷消息204内的偏移可表
示数据的个别部分。当由经嵌入数据接收器模块312级联在一起时,所述个别部分使程序116的线程识别符或其它上下文数据能够直接从存储器总线110-1的存储器迹线确定。
[0088]
使用校验和检测地址流中的数据
[0089]
图4说明具有支持数据传输的检测的地址流112-5的实例检测方案400。当计算机100的程序116或操作系统想要经由存储器总线110的地址部分传达经嵌入数据时,库314或316中的例程可指导主机装置102将前导码消息402注入到地址流112-5中。响应于由存储器108-1的经嵌入数据接收器模块312识别,前导码消息402可使用本文中所描述的消息接发协议来预示额外数据的传输。每次数据传输均使用校验和的这种消息接发协议可避免对每个此传输使用前导码消息402。
[0090]
地址流112-5中的前导码消息402包含具有偏移[5、2、0、1]的页面“b”的四个地址的序列。前导码消息402对数据存在的指示可基于绝对偏移[5、2、0、1]或一系列地址间增量[-3、-2、 1]。前导码消息402可在地址流中重复n个周期,其中n是任何正整数。重复偏移序列数十、数百或数千次会改善经嵌入数据接收器模块312将识别前导码消息402的可能性。准确识别可防止数据的错误肯定或否定检测(例如,当处理器104实际上正在传达用于存储器请求的物理地址时,可能发生数据的错误肯定检测)。
[0091]
在控制存储器总线110时,存储器控制器106可重新布置地址出现在地址流112-5中的顺序。因此,根据一些所描述实施方案,偏移或地址间增量的顺序可为灵活的。
[0092]
代替识别特定偏移序列的是,经嵌入数据接收器模块312可通过识别在滑动时间窗口中的单个页面的特定偏移分布或给定数量的地址来识别前导码消息402。例如,经嵌入数据接收器模块312响应于注意到具有偏移“5”、“2”、

等等的页面“b”的数百个地址而识别前导码消息402。对于在滑动时间窗口期间在地址流112-5中观察到的不同绝对偏移或地址间增量中的每一者,经嵌入数据接收器模块312保持计数。
[0093]
响应于确定不同绝对偏移或地址间增量中的每一者的计数在滑动时间窗口期间相等,经嵌入数据接收器模块312将前导码消息402中引用的页面“b”记录为(图2的)邮箱200。所述模块还开始监控有效载荷消息404,所述有效载荷消息引用前导码消息402中指示的相同页面地址“b”。另一方面,响应于确定所述偏移分布不匹配前导码消息402的预期偏移分布,经嵌入数据接收器模块312忽略地址流1123中的地址,因为所述地址不包含经嵌入数据。
[0094]
以这种方式发送前导码消息402以起始传达数据可改善可靠性且减少地址流112-5中的噪声。这可能有所帮助,因为地址流112-5的其它内容可能中断用于传达经嵌入数据的相关地址序列。对于经嵌入数据接收器模块312,地址流112-5内的任何噪声对应于用于合法存储器请求的地址,而非数据传输。由经嵌入数据接收器模块312识别且可能记录或以其它方式使用递送数据的地址,而不是用于存储器请求的地址。在一些情况下,响应于确定邮箱是或对应于页面“b”,经嵌入数据接收器模块312辨识这意味着整个页面“b”被程序116专用于传达数据。邮箱页面中将可能几乎不存在噪声,因此指向页面“b”的任何地址均由经嵌入数据接收器模块312确定为数据传输。
[0095]
在已将存储器108-1的页面“b”识别为被计算机100-1分配给程序116的邮箱200之后,经嵌入数据接收器模块312确定地址流112-3中的任何额外地址均引用“b”页面。一旦建立邮箱页面“b”,库314或316就指导主机装置102输出有效载荷消息404-1,包含偏移[a、b、
c]。因此,程序116通过库314或316的作用,可将数据分组编码为邮箱页面“b”内的偏移。
[0096]
地址流112-5可传输任何大小的有效载荷消息,且经嵌入数据接收器模块312同样可接收及解释有效载荷消息,无论大小如何。最初,库314或316从程序116接收用来传输数据的请求。在所述请求内,程序116可与库314或316共享数据的大小。在其它实例中,库314或316可通过确定所述数据占用多少位来确定输出所述数据所需的地址的数量。基于这个位数量或所述请求的大小及每偏移的位数量,库314或316确定将在地址流112-5中使用以在单个有效载荷消息404中发送所有数据的地址的数目。例如,库314或316确定有效载荷消息404-1包含数据[a、b、c]所需的总位数量。通过将这个总位数量除以每一地址的数据容量(例如,以位为单位的偏移大小),库314或316识别用于将数据[a、b、c]作为单个有效载荷消息404-1进行发送的地址的数量。
[0097]
为了实现数据在由经嵌入数据接收器模块312作为地址流112-5的部分进行接收时的解码或检测,库314或316可在数据传输时提供校验和。校验和提供从核心数据导出的值且因此可将核心数据与校验和链接,且反之亦然。校验和的实例是循环冗余校验(crc)码。库314或316可通过发送数据的crc校验和(有时也被称为“crc值”或更简称为“crc”)来实施crc码方案,所述数据可为有效载荷消息404-1的部分。例如,有效载荷消息404-1中的三个偏移中的仅两个偏移[a、b]包含数据,而第三偏移[c]是数据中的其它两个偏移的特定组合的crc校验和。
[0098]
库314或316计算地址的数量以发送数据,且接着在那些地址内的偏移上计算crc校验和。将crc校验和包含为额外地址内的偏移使经嵌入数据接收器模块312能够检测哪些地址构成有效载荷消息404-1。另外,crc校验和使经嵌入数据接收器模块312能够识别crc且按正确顺序将有效载荷消息404-1拼凑在一起,即使存储器控制器106重新布置有效载荷消息404-1的片段且通过存储器总线110按不同顺序或作为无序群组发出所述片段也是如此。
[0099]
在所说明实例中,在滑动时间窗口内,地址流112-5包含有效载荷消息404-1。有效载荷消息404-1指向邮箱页面“b”且包含具有偏移[a、b、c]的三个地址。尽管三个偏移出现在地址流112-5中,但所述偏移中的仅两者是有效载荷数据,且第三者是crc校验和。经嵌入数据接收器模块312可能不知道三个偏移中的哪一者是crc校验和及有效载荷数据的正确顺序。
[0100]
为了确定哪个偏移是crc校验和,经嵌入数据接收器模块312考虑有效载荷消息404-1中的所有偏移,有效载荷消息404-1是由地址页面“b”识别,以不同排列组合(例如,级联)直到除一个偏移之外的所有偏移的组合等于剩余偏移的crc校验和。对于偏移[a、b、c],偏移的不同组合包含abc、acb、bac、bca、cab及cba。不同组合中的仅一者将很有可能传递crc校验。例如,“a b”可产生校验和“c”。经嵌入数据接收器模块312确定正确地指定针对在滑动窗口期间接收的其它偏移计算的crc校验和的组合。如果位是在不同位置中(所述位是从所述位置进行编码且输出到地址流112-5),那么crc校验将失败。通过考虑不同组合中的每一者直到两个地址偏移的正确序列得到由第三偏移指示的校验和,经嵌入数据接收器模块312可使用crc校验和来对来自地址流112-5的数据进行解码。尽管以实例的方式使用crc校验和,但可代替地使用在具有或没有顺序确认的情况下验证数据有效载荷的其它校验和。
[0101]
当经嵌入数据接收器模块312确定引用邮箱页面“b”且传递crc校验和的偏移的组合时,经嵌入数据接收器模块312可隔离数据的偏移且丢弃含有crc校验和的偏移。接着可保存或使用经隔离偏移以执行某个功能。如果经嵌入数据接收器模块312未能在经识别有效载荷消息404中识别crc校验和,那么经嵌入数据接收器模块312可输出crc校验和失败的警示或通知。例如,经嵌入数据接收器模块312可响应于确定有效载荷消息404-2内的偏移的组合没有产生包含在由不同页面地址“a”识别的消息中的crc校验和而将故障码注入存储器总线110的迹线中。
[0102]
尽管在图4中未展示前导码消息,但经嵌入数据接收器模块312可能已确定存储器108-1的页面地址“a”对应于邮箱200。在尝试确定有效载荷消息404-2的crc校验和时,经嵌入数据接收器模块312可能无法识别来自有效载荷消息404-2的满足包含在其它偏移中的一者中的crc校验和的偏移[p、q、r]的组合。在迹线的后续分析期间,出现在地址流112-3上的故障码指示crc校验和失败的位置,以辅助调试故障。
[0103]
这种校验和技术的优点是,邮箱的个别地址出现的顺序无关紧要,因为(除在极少数情况下)crc校验将仅以单个正确组合传递。当计算或应用crc校验和时,顺序很重要。如果按与用来产生crc校验和的顺序不同的顺序分析偏移,那么将不证实crc校验和。crc校验和需要对应于crc的位的特定顺序,因此如果1及0是按不同顺序,那么crc校验失败。
[0104]
可由库314或316计算或建立crc;然而,不需要提前建立crc校验和的属性或实施crc的方案。crc可为任何大小,且库314或316可在前导码消息402或(例如,图2的)先前有效载荷消息204的偏移内传达crc校验和的大小。这些类型的初始化可设置或传达待使用的校验和的大小或类型。尽管其可在运行时改变(例如,通过另一前导码消息),但如果经嵌入数据接收器模块312在计算偏移的不同组合之前知道crc校验和的位数目,那么搜索偏移的正确组合可消耗更少的处理资源或更快地完成。
[0105]
库314或316可另外或替代地传达多少地址形成包含校验和及相关联有效载荷数据两者的群组以促进存储器装置处的分析。在上文所描述的一些实例实施方案中,用来检测数据的校验和方法是结合邮箱页面执行。例如,有效载荷消息404-1被描绘为使用页面“b”作为邮箱。这些实施方案促进识别应经分析以潜在地匹配校验和的那些地址。然而,这些实施方案还需要发送可能相对冗长的前导码消息402。因此,在其它实例实施方案中,可在不首先建立邮箱的情况下发送有效载荷消息404-1。省略邮箱的这些实施方案避免前导码消息402的开销及用于对地址流112-5进行解码且使用校验和来检测一组相关地址的增加的成本。此外,尽管本文中的一些描述涉及经嵌入数据接收器模块312在操作或测试期间处理地址流112-5或基于检测到的数据来采取行动,但这些描述也可或代替地适用于由正在处理地址流的逻辑分析器或测试设备(例如,在测试结束之后离线)执行的动作。
[0106]
测试环境
[0107]
图5-1说明本文档中所描述的各种技术及装置可在其中操作以执行存储器测试的额外实例环境500-1。环境500-1包含作为计算机100-2,计算机100-2是计算机100-1的实例。计算机100-2包含与存储器装置108-2通信地耦合的主机装置102,存储器装置108-2是存储器装置108-1的实例。计算机100-2还例如经由直接耦合到存储器总线110的一或多个探针504,经由连接到主机装置102的互连件506或使用耦合到存储器装置108-1的互连件508通信地耦合到逻辑分析器模块502。逻辑分析器模块502可为计算机100-2的内部组件或
甚至为计算机100-2内的存储器108-2。在其它实例中,逻辑分析器模块502是在计算机100-2外部实施,例如ate的部分,且经配置以记录存储器总线110的迹线。
[0108]
逻辑分析器模块502直接从地址流112或间接确定嵌入地址流112内的数据122。数据122直接从经由一或多个探针504获得的信号确定。为了间接确定数据122,使用其它信号或信息,尤其是通过互连件506或508从主机装置102或存储器108-2获得的信息或信号。例如,任选的经嵌入数据接收器模块312-1(其是经嵌入数据接收器模块312的实例)可确定嵌入地址流112内的数据122且输出数据122。通过直接或间接确定嵌入地址流112中的数据122,逻辑分析器模块502使用数据122来标记或以其它方式增强从出现在存储器总线110上的其它信息产生的存储器迹线。
[0109]
无论输入信号的源如何,逻辑分析器模块502均可将从一或多个探针504、互连件506及互连件508接收的信号编译成可与出现在存储器总线110上的流量同时或离线分析的增强型存储器迹线。逻辑分析器模块502可例如使用互连件506将增强型存储器迹线输出到数据文件、程序116或另一系统以供测试及评估群组考虑。来自逻辑分析器模块502的这个输出可驱动程序116的用户接口或不同应用程序,计算机100-2的用户可从所述应用程序分析与主机装置到存储器装置接口相关联的操作,包含计算机100-2的存储器总线110。
[0110]
经嵌入数据接收器模块312-1可将与经嵌入数据接收器模块312-1从地址流112收集的信息不同的信息输出到逻辑分析器模块502。例如,数据122,包含crc校验和可作为地址流112的部分出现在存储器总线110上。响应于确定crc校验和且验证数据122的准确度,经嵌入数据接收器模块312-1可经由互连件508输出数据122-的版本,除最初从数据122排除crc校验和之外。在一些情况下,经嵌入数据接收器模块3121使用数据122而不将其传递到逻辑分析器模块502。以这种方式,数据122的传达对于逻辑分析器模块502可为透明的。
[0111]
模拟环境
[0112]
转向图5-2,说明本文档中所描述的各种技术及装置可在其中操作以使用从存储器测试产生的结果来模拟存储器的实例环境500-2。环境500-2表示模拟器计算系统的部分且包含存储器控制器模拟器模块510,所述存储器控制器模拟器模块在处理器(未展示)上执行时配置处理器以基于增强型地址迹线512来输出模拟结果514,所述增强型地址迹线包含嵌入地址流中的数据。
[0113]
存储器控制器模拟器模块510与计算机可读存储媒体302-1通信地耦合,计算机可读存储媒体302-1是计算机可读存储媒体302的实例。逻辑分析器模块502例如基于从探针504、互连件506或互连件508中的至少一者收集的信息来存储增强型地址迹线512。计算机可读存储媒体302-1可进一步存储模拟结果、控制相依性或其它地址迹线数据或元数据。
[0114]
存储器控制器模拟器模块510包含迹线预处理器模块516,所述迹线预处理器模块经配置以将增强型地址迹线512作为输入进行接收且将增强型地址迹线512分成两个部分。第一部分包含地址迹线520,所述地址迹线没有任何经嵌入数据,且第二部分包含与增强型地址迹线512分开的迹线元数据522,所述迹线元数据表示经嵌入数据,包含控制相依性或其它上下文。
[0115]
存储器控制器模拟器模块510的模拟引擎模块518产生从存储器控制器模拟器模块510输出的模拟结果514。模拟结果514将数据,包含控制相依性或其它上下文与地址迹线520中所展示的地址相关联。因为模拟引擎模块518将迹线元数据522并入到地址迹线520的
分析中,所以模拟结果514比在测试期间未将数据嵌入地址流中的情况下产生的模拟结果更准确或至少更详细。存储器控制器模拟器模块510经配置以使用包含经嵌入数据的增强型地址迹线512来产生比使用地址迹线520而不存取迹线元数据522来产生模拟结果的情况更准确的存储器设计模拟。
[0116]
测试操作
[0117]
图6说明具有由经配置以将数据嵌入地址流中的计算系统执行的操作602到614的实例过程600,所述地址流与数据流分开。如通篇所描述,地址流及数据流是通过单个互连件,例如存储器总线传播。例如,计算机100通过在主机装置102处执行指令,例如与程序116及/或库(例如来自图3的库314或316)相关联的指令来执行操作602到614。操作(或动作)602到614的执行不一定限于图6中展示或本文中描述操作的顺序或组合。此外,可重复、组合或重组一或多个操作中的任一者以提供用于将数据嵌入数据流中的其它操作。在执行操作602到614时,计算机100因此经配置以通过在主机装置102与存储器108之间延伸的存储器总线110在地址流112中传达数据122。
[0118]
在602处,计算机100识别用于在地址流内传输的数据。例如,主机装置102从程序116接收数据,所述程序在处理器104处执行时调用库314或316以调用一或多个函数。当由程序116调用时,库314或316指导主机装置102在地址流112内发送数据122。
[0119]
在604处,计算机100产生指示用于在地址流内传输的数据的地址位模式。例如,在主机装置102处执行时,库314将从程序116作为输入接收的数据122封装成适于通过地址流112传达的格式。指示数据的地址位模式可根据图2-1的基于重复的模式、图2-2的基于消息的模式等等来表述。地址位模式可包含校验和、每地址的序列指示符等。
[0120]
在606处,计算机100通过在地址流内将地址位模式作为位流进行发送来传输数据指示。在此,位流包含多个位且占用地址流112的一部分且包含数据或数据指示而非地址信息。例如,来自步骤604的经封装数据122由存储器控制器106输出到地址流112上。经封装数据122的指示出现在存储器总线的地址线上作为。一或多个地址的经编码序列通知存储器108或地址流112的其它接收者(例如,逻辑分析器模块502)数据正在通过地址流112从主机装置102传送,而不是递送用于读取或写入请求的地址。
[0121]
在606处,计算机100可以各种方式传输数据指示,如贯穿本文档所描述。操作608、610、612及614中的每一者是任选的且不是必需的,但可提高通过地址流发送数据的可靠性或安全性。
[0122]
在608处,计算机100确定是否使用消息接发协议。如果是,那么当地址流112的接收者经配置以检测前导码消息、有效载荷消息及/或后同步码消息时,在610处计算机100包含数据122,或如何关于存储器108引用数据122的指示,作为有效载荷消息的部分。例如,通过地址流传达的地址位可表示数据122,或其可指示由程序116保留以在地址流112上传达数据122的存储器108的页面的偏移。在其它实施方案中,可在时间窗口208内(例如,在n个周期中)重复地传输地址位模式以指示数据存在于地址流112中。
[0123]
替代地,当地址流112的接收者未经配置用于使用本文中所描述的消息接发协议进行通信时,计算机100可绕过操作610且进行到操作612。在此类情况下,所述计算机可包含数据122作为一系列经编码地址位,随后可从存储器迹线或由接收者识别所述一系列经编码地址位。或,仍绕过步骤610,计算机100可通过传输指示为将数据122传达到存储器108
而保留的页面的地址位来传达数据122的指示,而不依赖于所描述消息接发协议。
[0124]
在612处,在存储器总线110重新布置一些地址流112使得数据122的部分在通过地址流112传达时出现乱序的情况下,计算机100确定数据122的传达否包含校验和,例如crc校验和。可由接收者使用校验和来确定地址位的正确排序以确定数据122或数据122的邮箱位置。如果不使用校验和,那么计算机100返回到操作602以重复过程600,前提是识别额外数据。
[0125]
在614处,所述计算机传达从所述模式中的地址位的正确排序确定的校验和。例如,主机装置102的库例程,例如库314或316确定用于递送数据122的地址位或地址间增量的模式,且基于所述模式来确定校验和使得如果数据122的部分散布有地址,或以其它方式按与主机装置102预期的顺序不同的顺序重新布置,那么接收者可对地址位进行排序以确定数据122。换句话说,主机102可将数据122的指示作为出现在地址流112中的无序地址群组而输出。处理器104经配置以在无序地址群组内包含表示对应于来自按正确顺序布置的无序地址群组的剩余偏移的校验和的一或多个偏移。
[0126]
地址流112的接收者可验证数据122,例如在互连件508上将数据122作为存储器总线110的存储器迹线的部分进行输出的条件。在此,经嵌入数据接收器模块312-1或其它接收者确定地址流112中所含的多个偏移。基于所述偏移,多个偏移的有序组合中的特定偏移包含基于有序组合中的剩余偏移计算的校验和。
[0127]
例如,有效载荷消息404-1包含按任何顺序的偏移[a、b、c]。所述偏移中的两者在级联在一起时满足由第三偏移指示的crc校验和。为了分析这三个偏移,经嵌入数据接收器模块312-1或其它接收者可尝试偏移[a、b、c]的每一组合直到两个偏移的组合产生由第三偏移指示的crc校验和。在这个实例中,偏移“c”及“a”在级联在一起作为“c a”时产生crc校验和值“b”。经嵌入数据接收器模块312-1可将表示数据122的偏移与表示crc校验和的(若干)偏移隔离。即,响应于确定特定偏移包括剩余偏移的crc校验和,经嵌入数据接收器模块312-1可将有序组合中的剩余偏移识别为由程序116在地址流112中传达的数据122。在其它实施方案,例如省略校验和或使用不反映数据顺序的校验和的实施方案中,序列指示符可作为在相关偏移群组中具有有效载荷数据的每一偏移的部分而包含在地址流中。
[0128]
数据122可指示对应于分配给发起数据的传达的程序的存储器页面的邮箱200位置。例如,偏移a及b级联在一起以形成邮箱位置ab,其传递等于c的crc校验和。程序116可在另一有效载荷消息404中将额外数据写入到邮箱位置ab,而无需调用库314或316及/或无需发送另一前导码消息402。经嵌入数据接收器模块312-1或其它接收者经编程以辨识地址流112中的地址,包含建立邮箱的页面(例如,页面“b”)。
[0129]
可重复动作606到614以例如使程序116能够输出另一有效载荷消息404或额外数据,例如新的执行上下文指示符(例如,线程id、过程id或程序计数器(pc))。
[0130]
尽管本文中的一些描述涉及经嵌入数据接收器模块312处理地址流112或基于检测到的数据来采取行动,但这些描述也可或代替地适用于由监控地址流112的逻辑分析器或其它接收者装置(例如,在测试结束期间或之后单独地)执行的动作。
[0131]
模拟操作
[0132]
图7说明具有由经配置以提取或解释嵌入地址流内的数据的计算系统执行的操作702到708的实例过程700,所述地址流例如在存储器测试期间通过存储器总线或其它被探
测或监控的互连件进行传播。例如,当由处理器加载与存储器控制器模拟器模块510相关联的指令时,存储器控制器模拟器模块510执行操作702到708。操作(或动作)702到708的执行不一定限于图7中展示或本文中描述操作的顺序或组合。此外,可重复、组合或重组一或多个操作中的任一者以提供用于将数据嵌入地址流中的其它操作。
[0133]
在702处,存储器控制器模拟器模块510接收地址迹线。例如,存储器控制器模拟器模块510获得由逻辑分析器模块502存储在例如计算机可读存储媒体302-1内的增强型地址迹线512作为输入。
[0134]
在704处,存储器控制器模拟器模块510从地址迹线提取数据。例如,迹线预处理器模块516将增强型地址迹线512作为输入进行接收且将增强型地址迹线512划分成没有任何经嵌入数据的地址迹线520及迹线元数据522。所述数据可包含前导码消息、后同步码消息、校验和、有效载荷消息等,如贯穿本公开所描述。
[0135]
在706处,存储器控制器模拟器模块510基于经提取数据来导出地址流中的地址的上下文元数据。例如,模拟引擎模块518从迹线元数据522导出控制相依性、线程识别符、程序计数器或其它上下文信息以用作用于增强模拟的输入或变量。
[0136]
在708处,存储器控制器模拟器模块510根据706处导出的上下文元数据来模拟存储器控制器。例如,模拟引擎模块518使用从迹线元数据522导出的控制相依性、线程识别符、程序计数器或其它上下文信息以注释或突显地址迹线520的部分。以这种方式,由模拟引擎模块518输出的模拟结果514经增强以包含有关在测试期间观察到的地址的上下文的有意义信息。
[0137]
虽然用于从地址流内嵌入及提取数据的技术主要被描述为促成存储器测试及存储器模拟,但存在用于将数据嵌入地址流内的许多其它用例。例如当分析存储器行为以调试执行程序116的软件问题时,例如可由存储器108或主机装置102使用数据来将系统或软件事件与其存储器活动对准。数据可递送参数或数据,所述参数或数据在嵌入地址流中时例如通过指定配置存储器108的加速器或其它组件的存储器侧硬件寄存器的值或状态来指导存储器108的内部函数或参数。
[0138]
图1到5的实体可被进一步划分、组合或与如本文中所描述的其相应所说明组件一起使用。图1的实例操作环境100、图5-1的500-1及图5-2的500-2,以及图2-1、2-2、3及4的详细说明说明能够采用所描述技术的许多可能环境、系统及装置中的一些。此外,本文档中所描述的一些过程及方法在图6或图7中被描绘为指定所执行操作的框群组,但由框群组指定的操作不一定按所展示顺序或组合执行。可重复、组合、重组或链接一或多个操作中的任一者以提供广泛的额外及/或替代方法,包含本文中所描述的其它过程。而且,所述技术不限于由一个实体或多个实体在一个装置,例如单个计算机或单个处理器上执行。代替地,所述技术可由可共同位于一个设施或地理上分散的物理上单独的硬件执行。
[0139]
计算机可读媒体包含非暂时性计算机存储媒体及通信媒体两者,包含促进将计算机程序从一个实体传送到另一实体的任何媒体。非暂时性存储媒体可为可由计算机存取的任何可用媒体,例如ram、rom、eeprom(例如,快闪存储器)、光盘(optical/compact disc)rom及磁盘。
[0140]
除非上下文另有规定,否则本文中对单词“或”的使用可被视为对“包含性或”的使用或容许包含或应用由单词“或”链接的一或多个项目的术语(例如,短语“a或b”可被解释
为仅容许“a”、仅容许“b”或容许“a”及“b”两者)。而且,如本文中所使用,涉及项目列表“中的至少一者”的短语是指那些项目的任何组合,包含单个成员。例如,“a、b或c中的至少一者”可涵盖a、b、c、a-b、a-c、b-c及a-b-c,以及具有多个相同元件的任何组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c及c-c-c,或a、b及c的任何其它排序)。此外,附图中所表示的项目及本文中所论述的术语指示一或多个项目或术语,且因此可互换地引用本书面描述中的项目及术语的单数或复数形式。
[0141]
结论
[0142]
尽管已用特定于特征及/或方法的语言描述用于将数据嵌入地址流中的技术的实施方案及其实现设备,但应理解,所附权利要求书的主题不一定限于所描述的特定特征或方法。相反,特定特征及方法被公开为实现交换嵌入地址流中的数据的实例实施方案。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献