用于在蜂窝调制解调器中同步数据处理的系统和方法与流程

文档序号:33646459发布日期:2023-03-29 04:21阅读:64来源:国知局
用于在蜂窝调制解调器中同步数据处理的系统和方法与流程
用于在蜂窝调制解调器中同步数据处理的系统和方法
1.相关申请的交叉引用
2.本技术要求于2021年9月24日提交的美国专利申请第17/448,863号的权益,该专利申请的公开内容以引用方式并入本文。


背景技术:

3.本公开整体涉及蜂窝数据处理,并且具体地涉及在蜂窝调制解调器中的流水线阶段之间的数据处理的同步。
4.随着高速蜂窝数据通信的出现,移动设备的用户越来越能够在他们需要时访问信息。由第3代合作伙伴项目(3gpp)颁布的蜂窝数据通信标准实现了基站和各种用户装备(ue)之间经由从ue到基站的“上行链路”和从基站到ue的“下行链路”进行的射频通信,该ue可以是移动设备,诸如智能电话、平板电脑、可穿戴设备等。
5.由3gpp颁布的标准包括用于无线电接入网络(ran)(诸如4g长期演进(在本文中被称为“4g”或“lte”)和5g新无线电(在本文中被称为“5g”或“nr”))的规范。4g和5g ran规范定义了基站和ue之间的多个逻辑信道,该多个逻辑信道包括发射应用层数据的物理上行链路共享信道(pusch)和物理下行链路共享信道(pdsch),以及发射用于指定与这些共享信道上的数据发射相关联的各种参数的物理上行链路控制信道(pucch)和物理下行链路控制信道(pdcch)。
6.这些规范还定义了用于准备数据以用于作为射频(rf)信号在每个信道上进行发射的操作序列。作为所涉及的复杂性的示例,用于pdsch的一般操作序列涉及以下步骤:基站接收由要传送到ue的数据位的序列组成的传输块。基站添加循环冗余校验(crc)位,基于最大码字大小来分割传输块,针对每段添加crc位,使用编码算法(其添加奇偶校验位来实现错误校正)对每个区段进行编码,执行比特交织和速率匹配操作(其提高了针对信道丢失的稳健性),并且应用加扰算法。然后将所得位序列映射到分配给子载波频率和时间区间(通常被称为“资源元素”)的调制符号序列上。逆快速傅里叶变换(ifft)生成波形的数字表示,该数字表示可转换为模拟的,与载波频率混合并经由天线(或天线阵列)发射到ue。ue反转基站操作以恢复数据。例如,ue可接收rf信号,通过移除载波频率来提取基带信号,生成该基带信号的数字化表示,并应用快速傅里叶变换(fft)来将信号变换为频域。解映射器可应用信道估计来产生表示每个发射位的相对概率是0或1的对数似然比(llr)序列。llr序列可被解扰、解交织和解速率匹配、解码和错误校正(基于解码之后的奇偶校验和crc位),从而产生输出数据块。对于pusch,操作序列类似,基站和ue的角色反转。通常包括较小数据块的pucch和pdcch具有其自己的相关联操作序列。特定操作和序列可变化;例如,用于4g和5g的共享信道使用不同的编码算法以及不同的交织顺序和速率匹配操作。
7.为了以高数据速率管理这些操作,ue通常包括专用蜂窝调制解调器。蜂窝调制解调器可被实施为一个或多个集成电路,在逻辑上分成“基带”处理器和“射频”或“rf”处理器。基带处理器处理操作,诸如分割、编码、交织和速率匹配以及用于上行链路信道的加扰(以及用于下行链路信道的反向操作),而rf处理器处理波形生成和所有模拟操作。
8.许多类型的ue是便携式电池供电的设备,诸如智能电话、平板电脑、可穿戴设备等。对于此类设备,期望具有蜂窝调制解调器,该蜂窝调制解调器是面积有效且节能的,同时支持高数据速率。另外,为了支持跨支持不同标准的基站可能可用的一系列地理区域的移动性,还期望同一调制解调器可支持多个蜂窝数据通信规范,例如4g和5g两者。


技术实现要素:

9.根据一些实施方案,蜂窝调制解调器处理器可包括实施特定复杂数据处理操作的专用处理引擎。为了实施操作诸如对pdsch信道的解码或对pusch信道的编码,蜂窝调制解调器可包括可执行操作序列中的各种步骤的处理引擎的各种流水线。例如,一种类型的流水线可准备用于rf发射的数据(就pusch信道而言),而另一种类型的流水线从接收到的rf发射中提取数据。使用基于固件的流控制和基于硬件的数据依赖性管理的混合项来提供流水线阶段之间的流控制或数据同步。例如,固件指令可通过参考与流水线缓冲器相关联的虚拟地址空间来限定数据流。流水线内的硬件联锁控制器可跟踪并执行该流水线的数据依赖性。
10.一些实施方案涉及处理系统,该处理系统包括一组处理引擎、缓冲存储器、控制处理器和联锁控制器。处理引擎中的一些或全部处理引擎可包括被配置为响应于指令而对输入数据执行操作以产生输出数据的电路。处理引擎可形成处理流水线,使得由处理引擎中的第一处理引擎产生的输出数据的至少一部分用作处理引擎中的第二处理引擎的输入数据的至少一部分。缓冲存储器可耦接到多个处理引擎,并且可包括一个或多个不同的物理缓冲器。缓冲存储器可具有相关联虚拟地址空间,其中该虚拟地址空间中的不同虚拟地址映射到该缓冲存储器中的不同位置。控制处理器可耦接到处理引擎并且被配置为将指令按顺序调度给这些处理引擎,其中这些指令中的至少一些指令指定虚拟地址空间中的虚拟输入地址范围和虚拟输出地址范围。联锁控制器可耦接到该多个处理引擎,并且被配置为:基于指令中指定的虚拟输入地址范围和虚拟输出地址范围来识别调度给不同处理引擎的指令之间的数据依赖性,并且防止处理引擎中的特定处理引擎从缓冲存储器中的位置读取输入数据或将输出数据写入缓冲存储器中的位置,直到与缓冲存储器中的位置相关联的虚拟地址的数据依赖性被清除为止。
11.在一些实施方案中,处理引擎可包括功能单元、调度队列、调度队列接口和指令接口。该功能单元可被配置为执行特定操作,该特定操作可以是复杂数据处理操作。调度队列接口可被配置为:从控制处理器按顺序接收一系列指令以执行特定操作,将所接收到的指令在调度队列中排队以用于按顺序执行,并且向联锁控制器传送所接收到的指令的虚拟输入地址范围和虚拟输出地址范围。指令接口可被配置为与联锁控制器通信以确定在调度队列排队中的下一个指令的数据依赖性是否被清除。例如,调度队列接口可被配置为:响应于从控制处理器接收到指令而向联锁控制器发送对虚拟输入地址范围的读取锁定请求和对虚拟输出地址范围的写入锁定请求,并且处理引擎可被配置为:在从缓冲存储器中与虚拟输入地址范围对应的位置读取数据之后向联锁控制器发送对虚拟输入地址范围的清除请求,并且在将数据写入缓冲存储器中与虚拟输出地址范围对应的位置之后向联锁控制器发送对虚拟输出地址范围的清除请求。在一些实施方案中,指令接口可被配置为向联锁控制器发送指定下一个指令的输入虚拟地址范围的轮询请求,并且从该联锁控制器接收对该轮
询请求的响应。对轮询请求的响应可指示是否相对于输入虚拟地址范围存在任何未清除的数据依赖性。仅当对轮询请求的响应指示相对于输入虚拟地址范围不存在未清除的数据依赖性时,指令接口才使得功能单元能够执行下一个指令。
12.在一些实施方案中,联锁控制器可包括:虚拟寄存器文件,该虚拟寄存器文件用于存储与不同虚拟地址范围相关联的一系列读取锁定和写入锁定;更新电路,该更新电路用于响应于从处理引擎接收到的请求创建和清除读取锁定和写入锁定的消息而更新虚拟寄存器文件;和决策逻辑,该决策逻辑用于基于虚拟寄存器文件来确定虚拟地址范围的数据依赖性是否已被清除。在一些实施方案中,处理引擎可轮询联锁控制器以确定涉及特定虚拟地址的读取或写入操作的数据依赖性是否已被清除,并且联锁控制器可执行决策逻辑以作出确定并发送响应。
13.在一些实施方案中,控制处理器可以是标量处理器,并且处理引擎可以是向量处理引擎。
14.在一些实施方案中,共享存储器电路耦接到处理流水线和处理器的一个或多个其他子系统。共享存储器可在与缓冲存储器相关联的虚拟地址空间之外。
15.一些实施方案涉及蜂窝调制解调器处理器,该蜂窝调制解调器处理器包括多个处理流水线,其中这些处理流水线中的至少两个处理流水线实施不同的数据处理操作。例如,这些处理流水线中的至少一个处理流水线可被配置为对要经由蜂窝无线电接入网络发射的数据进行操作,并且这些处理流水线中的至少一个另外的处理流水线可被配置为对经由蜂窝无线电接入网络接收到的数据进行操作。处理流水线可包括一组处理引擎、缓冲存储器、控制处理器和联锁控制器。处理引擎可包括被配置为响应于指令而对输入数据执行操作以产生输出数据的电路。处理引擎可形成处理流水线,使得由处理引擎中的第一处理引擎产生的输出数据的至少一部分用作处理引擎中的第二处理引擎的输入数据的至少一部分。缓冲存储器可耦接到多个处理引擎,并且可包括一个或多个不同的物理缓冲器。缓冲存储器可具有相关联虚拟地址空间,其中该虚拟地址空间中的不同虚拟地址映射到该缓冲存储器中的不同位置。控制处理器可耦接到处理引擎并且被配置为将指令按顺序调度给这些处理引擎,其中这些指令中的至少一些指令指定虚拟地址空间中的虚拟输入地址范围和虚拟输出地址范围。联锁控制器可耦接到该多个处理引擎,并且被配置为:基于指令中指定的虚拟输入地址范围和虚拟输出地址范围来识别调度给不同处理引擎的指令之间的数据依赖性,并且防止处理引擎中的特定处理引擎从缓冲存储器中的位置读取输入数据或将输出数据写入缓冲存储器中的位置,直到与缓冲存储器中的位置相关联的虚拟地址的数据依赖性被清除为止。处理流水线可具有其自己的处理引擎、其自己的缓冲存储器(其具有其自己的虚拟地址空间),以及其自己的联锁控制器。在一些实施方案中,控制处理器可在多个流水线之间共享。
16.在一些实施方案中,蜂窝调制解调器处理器还可包括耦接到处理流水线中的至少两个处理流水线的共享存储器电路。在存在共享存储器电路的情况下,耦接到共享存储器电路的处理流水线中的处理引擎可包括:第一处理引擎,该第一处理引擎包括被配置为从该共享存储器电路读取输入数据并且将输出数据写入该处理流水线的缓冲存储器中的输出位置的电路;和最终处理引擎,该最终处理引擎包括被配置为从该处理流水线的缓冲存储器中的输入位置读取输入数据并且将输出数据写入该共享存储器电路的电路。
17.一些实施方案涉及在具有耦接到联锁控制器的一组处理引擎的处理流水线中执行的方法。在一些实施方案中,控制处理器可按顺序向处理流水线发出指令。处理引擎可:从控制处理器接收要执行的新指令,该新指令指定处理流水线的虚拟地址空间中的虚拟输入地址范围和虚拟输出地址范围中的一者或两者;发送对该新指令的虚拟输入地址范围的读取锁定请求和对该新指令的虚拟输出地址范围的写入锁定请求;对该新指令进行排队以用于执行;识别要执行的下一个指令;在执行该下一个指令之前,利用该下一个指令的虚拟输入地址范围来轮询联锁控制器;在联锁控制器指示该下一个指令的虚拟输入地址范围的数据依赖性被清除之后执行该下一个指令,其中执行该下一个指令可包括从与输入虚拟地址范围对应的缓冲存储器位置读取输入数据;利用该下一个指令的虚拟输出地址范围来轮询联锁控制器;在联锁控制器指示虚拟输出地址范围的数据依赖性被清除之后,将输出数据写入与该下一个指令的虚拟输出地址范围对应的缓冲存储器位置;在从与该新指令的虚拟输入地址范围对应的缓冲存储器位置读取输入数据之后,发送清除针对该新指令的虚拟输入地址范围的读取锁定的请求;并且在将输出数据写入与虚拟输出地址范围对应的缓冲存储器位置之后,发送清除针对该新指令的虚拟输出地址范围的写入锁定的请求。
18.在一些实施方案中,联锁控制器可:从处理流水线中的处理引擎接收读取锁定请求、写入锁定请求、清除读取锁定的请求和清除写入锁定的请求;响应于每个所接收到的读取锁定请求、写入锁定请求、清除读取锁定的请求或清除写入锁定的请求,更新虚拟寄存器文件中的虚拟地址空间的数据依赖性信息;从处理引擎中的一个处理引擎接收轮询请求,该轮询请求识别轮询的虚拟地址范围并指示读取操作或写入操作;基于轮询的虚拟地址范围和所指示的读取操作或写入操作来确定轮询的虚拟地址范围是否清除了数据依赖性;并且向请求处理引擎发送对轮询请求的响应,其中在轮询的虚拟地址范围清除了数据依赖性的情况下,该响应是授权响应,并且在轮询的虚拟地址范围未清除数据依赖性的情况下,该响应是拒绝响应。在一些实施方案中,确定轮询的虚拟地址范围是否清除了数据依赖性可包括:在轮询请求指示读取操作的情况下,确定针对轮询的虚拟地址范围的任何写入锁定是否在由处理引擎所请求的针对轮询的虚拟地址范围的读取锁定之前,其中该轮询请求是从该处理引擎接收的;并且在轮询请求指示写入操作的情况下:确定针对轮询的虚拟地址范围的任何写入锁定是否在由处理引擎中的该一个处理引擎所请求的针对轮询的虚拟地址范围的写入锁定之前,其中该轮询请求是从该一个处理引擎接收的;并且确定针对轮询的虚拟地址范围的任何读取锁定是否在由处理引擎中的该一个处理引擎所请求的针对轮询的虚拟地址范围的写入锁定之前,其中该轮询请求是从该一个处理引擎接收的。
19.以下具体实施方式连同附图将提供对要求保护的主题的实质和优点的更好理解。
附图说明
20.图1是根据一些实施方案的用户设备的简化框图。
21.图2是根据一些实施方案的蜂窝调制解调器处理器的简化框图。
22.图3示出了根据一些实施方案的用于处理器的流水线的架构的简化框图。
23.图4示出了根据一些实施方案的图3的流水线的更详细的框图。
24.图5是示出根据一些实施方案的用于流水线的联锁控制器的另外的细节的简化框图。
25.图6示出了根据一些实施方案的可在将指令接收到处理引擎中时执行的过程。
26.图7示出了根据一些实施方案的用于在处理引擎中执行指令的过程的流程图。
27.图8示出了根据一些实施方案的用于在处理引擎中执行指令的另一个过程的流程图。
28.图9示出了根据一些实施方案的可由联锁控制器执行的过程的流程图。
29.图10是根据一些实施方案的用于联锁控制器的决策逻辑过程的流程图。
30.图11示出了根据一些实施方案的发射前端流水线的简化框图。
31.图12是根据一些实施方案的用于使用流水线对数据块进行编码的过程的流程图。
32.图13示出了根据一些实施方案的另一个数据处理流水线的简化框图。
具体实施方式
33.出于例示和描述目的提供了示例性实施方案的以下描述。不旨在穷举或将所要求保护的实施方案限制为所描述的精确形式,并且本领域技术人员将理解,许多修改和变型是可能的。这些实施方案已被选择和描述以充分说明这些实施方案的原理和实际应用,由此使得本领域的其他技术人员能够充分利用各种实施方案并做出各种修改以适于所设想的特定用途。
34.图1是根据一些实施方案的用户设备100的简化框图。用户设备100可以是例如移动设备,诸如智能电话、平板计算机、膝上型计算机、可穿戴设备或能够作为用户装备(ue)在蜂窝无线电接入网络中操作的任何其他电子设备。用户设备100代表可结合如本文所述的蜂窝调制解调器的一大类用户可操作设备,并且此类设备在能力、复杂性和形状因数方面可能有很大不同。
35.主处理器102可包括例如执行程序代码以便执行与用户设备100相关联的各种功能的一个或多个单核或多核微处理器和/或微控制器。例如,主处理器102可执行操作系统和与操作系统兼容的一个或多个应用程序。在一些情况下,程序代码可包括用于例如经由蜂窝数据网络(诸如4g或5g网络)将信息发送到其他设备或系统和/或从其他设备或系统接收信息的指令。
36.用户界面104可包括:用户可操作的输入部件诸如触控板、触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、键盘、麦克风等;以及输出部件诸如视频屏幕、指示灯、扬声器、耳机接口、触觉电机等;还有支持性电子器件(例如,数模转换器或模数转换器、信号处理器等)。根据特定用户设备100的具体实施,用户可操作用户界面104的输入部件以调用用户设备100的功能和/或经由用户界面104的输出部件从用户设备100接收输出。在一些实施方案中,用户设备100可具有有限的用户界面(例如,少量指示标识和/或按钮)或无用户界面。
37.系统存储器106可包含任何类型的数据存储介质和数据存储介质的任何组合,包括但不限于随机存取存储器(例如,dram、sram)、闪存存储器、磁盘、光学存储介质、或任何其他非暂态存储介质、或介质的组合,并且可包括易失性介质和/或非易失性介质。系统存储器106可用于存储要由主处理器102执行的程序代码和可在用户设备100的操作中生成和/或使用的任何其他数据或指令。
38.输入/输出(i/o)接口108可包括硬件部件和支持软件,这些硬件部件和支持软件被配置为允许用户设备100经由点对点或局域网链路与其他设备通信。在一些实施方案中,
i/o接口108可支持近程无线通信(例如,经由wi-fi、蓝牙或其他无线传输通信),并可包括合适的收发器和信号处理电路以及控制电路的操作的软件或固件。除此之外或相反,在一些实施方案中,i/o接口108可支持到另一个设备的有线连接。
39.为了使得能够经由蜂窝网络进行通信,包括蜂窝数据通信,用户设备100可包括耦接到天线子系统112的蜂窝调制解调器110。蜂窝调制解调器110可实施为微处理器或微控制器,该微处理器或微控制器充当主处理器102的协处理器。在一些实施方案中,蜂窝调制解调器110和主处理器102可实施为在公共衬底上制造的集成电路,例如,作为芯片上系统设计的一部分。下面描述了蜂窝调制解调器110的示例性具体实施。
40.天线子系统112可包括天线,该天线可使用电线、金属迹线或能够辐射射频(rf)电磁场并在蜂窝数据通信中使用的频率下响应rf电磁场的任何其他结构来实施。例如,4g和5g网络当前使用各种频谱带,包括在700mhz、850mhz、900mhz、1.5ghz、1.8ghz、2.1ghz、2.5ghz和3.5ghz下的带。天线子系统112还可包括用于驱动天线的电路和用于响应于接收到的rf信号而生成数字信号的电路。特定的天线具体实施对于理解本公开并非至关重要,并且本领域技术人员将知道许多具体实施。在一些实施方案中,天线子系统112可在蜂窝调制解调器110和i/o接口108之间共享;例如,同一天线可用于支持蜂窝、wi-fi和/或蓝牙通信的任何组合。
41.用户设备100还可包括图1中未示出的其他部件。例如,在各种实施方案中,用户设备100可包括:使用固定或可移除的存储介质的一个或多个数据存储设备;全球定位系统(gps)和/或其他全球导航卫星系统(gnss)接收器;相机;麦克风;扬声器;电源(例如,电池);电源管理电路;任何数量的环境传感器(例如,温度传感器、压力传感器、加速度计、化学传感器、光学传感器等);等等。因此,用户设备100可提供各种功能,这些功能中的一些或全部可通过蜂窝调制解调器110所支持的蜂窝数据通信来增强或依赖于该蜂窝数据通信。
42.图2是根据一些实施方案的蜂窝调制解调器处理器200的简化框图。蜂窝调制解调器处理器200可实施图1的全部或部分蜂窝调制解调器110。在各种实施方案中,蜂窝调制解调器处理器200可在蜂窝无线电接入网络(诸如4g网络和/或5g网络)中作为用户装备(ue)进行操作。
43.蜂窝调制解调器处理器200的信号处理能力可在各种处理集群202中实现。每个处理集群202可包括一个或多个流水线210和专用缓冲存储器212(例如,sram)。可利用处理集群202将缓冲存储器212的部分分配给每个流水线210,使得不同的流水线210不需要共享缓冲器。每个流水线210可实施与蜂窝数据通信相关联的特定操作序列。例如,控制和授权集群202-a可实施用于4g和/或5g网络的物理下行链路控制信道(pdcch)处理的一个或多个流水线210-a。从控制信道提取的信息可例如经由数据结构220提供给其他集群。解调/解码(dmdc)集群202-b可实施用于4g和/或5g网络的物理下行链路共享信道(pdsch)处理的一个或多个流水线210-b。上行链路集群202-c可实施用于4g和/或5g网络的物理上行链路控制信道(pucch)处理和物理上行链路共享信道(pusch)处理的一个或多个流水线210-c。控制和授权集群202-a、dmdc集群202-b和上行链路集群202-c中的流水线可在频域中操作。时域集群202-d可实施用于时域和频域之间的转换的一个或多个流水线210-d,该转换可包括傅里叶变换和逆傅里叶变换(例如,使用快速傅里叶变换(fft)或其他离散傅里叶变换(dft)算法)。
44.每个流水线210包括实施特定操作序列的专用逻辑电路。操作可符合特定蜂窝数据网络(包括4g和/或5g网络)的规范。例如,dmdc集群202-b中的pdsch流水线210-b可实施用于4g pdsch信道的频域信号处理操作,包括正交频分复用(ofdm)符号解映射、解扰、解交织、速率恢复、使用turbo解码器进行的解码,以及错误检测和校正。类似地,dmdc集群202-b中的单独pdsch流水线210-b可实施用于5g pdsch信道的频域信号处理操作,包括解扰、解交织、速率恢复、使用低密度奇偶校验(ldpc)解码器进行的解码,以及错误检测和校正。在一些实施方案中,pdsch流水线210-b中的至少一个pdsch流水线可以是处理4g和5g pdsch解码两者的可配置流水线。作为另一个示例,上行链路集群202-c中的pucch流水线210-c可实施用于4g pucch和pusch信道的频域上行链路处理,包括pucch和pusch数据块的复用。例如,第一流水线可执行pusch编码操作,包括crc(循环冗余校验)计算、turbo编码、编码子块的交织和速率匹配,而第二流水线可执行pucch编码操作,包括crc计算、卷积编码、编码子块的交织和速率匹配。下游流水线可接收第一流水线和第二流水线的经速率匹配的输出,并将该数据复用到单个数据流中以用于发射,然后对该数据进行加扰。该输出可被映射到ofdm符号序列以用于发射。如这些示例所示,每个流水线210可实施复杂的操作,并且不同的流水线210可实施不同的操作。在一些情况下,集群202可包括同一流水线210的多个副本,该多个副本可在数据流的不同部分上并行操作以支持更高的吞吐量。除此之外或相反,集群202可包括多个不同的流水线210。例如,在一些实施方案中,dmdc集群202-b可具有专用于4g pdsch处理的一个流水线和可被重新配置用于4g或5g pdsch处理的共享流水线的两个副本。下面描述了流水线和信号处理操作的另外的示例。
45.如上所述,每个流水线210可具有其自身的缓冲器212以在数据前进通过流水线时存储该数据。为了有利于在不同的流水线210和不同的集群202之间共享数据,可提供包括在蜂窝调制解调器处理器本地的存储器222(被称为“l1存储器”)的数据结构200。数据结构200可包括实施l1存储器222的存储器电路(例如,sram、dram等)、经由横杆连接到集群202的读取接口和写入接口,以及用于(例如,使用时分复用或其他技术)管理多个请求的仲裁逻辑。在一些实施方案中,可实施数据结构200,使得任何集群202都可访问l1存储器222中的任何位置。特定存储器或数据结构架构对于理解本公开并非至关重要,并且可使用各种架构,包括常规架构。在一些实施方案中,l1存储器222可用于将数据传递到流水线210中和该流水线外。例如,如下所述,每个流水线210可包括从l1存储器222读取输入数据的第一阶段(或处理引擎)和将输出数据写入l1存储器222的最终阶段(或处理引擎)。
46.控制结构230可包括实施集群202之间和/或蜂窝调制解调器处理器200和设备或系统(例如,图1的用户设备100)的其他部件之间的通信的电路,蜂窝调制解调器处理器200在该设备或系统中操作。例如,控制结构230可支持从上行链路集群202-c到时域集群202-d、指示上行链路数据何时准备好用于转换到时域和发射的消息,并支持从时域集群202-d到dmdc集群202-b和/或控制和授权集群202-a、指示何时接收到下行链路数据并且下行链路数据何时准备好用于解码的消息。可经由控制结构230来支持用于协调跨不同集群或其他部件的操作的任何其他消息或控制信号。特定控制架构对于理解本公开并非至关重要,并且可使用各种架构,包括常规架构。
47.蜂窝调制解调器处理器200还可包括用于系统(例如,图1的用户设备100)的其他部件的接口,蜂窝调制解调器处理器200在该系统内操作。例如,系统存储器接口240可提供
直接存储器存取(dma)接口以在l1存储器222和图1的系统存储器106之间传递数据,包括用于经由pusch发射的数据和经由pdsch接收到的数据。rf接口250可将数据传递到天线子系统112并从该天线子系统传递数据(例如,作为由天线子系统112转换为模拟波形或从模拟波形转换而来的数字数据流)。主处理器接口260可经由接口诸如高级可扩展接口(axi)与主处理器102通信,该接口是arm高级微控制器总线架构的一部分或用于主处理器和协处理器之间的通信的任何其他合适的接口。系统存储器接口240、rf接口250和主处理器接口260可经由控制结构230耦接到蜂窝调制解调器处理器200内的其他元件。
48.应当理解,蜂窝调制解调器处理器200是例示性的,并且变型和修改是可能的。蜂窝调制解调器处理器可包括任何数量的集群和流水线以及集群和流水线的任何组合,这些集群和流水线支持任何数量的蜂窝数据通信标准和蜂窝数据通信标准的任何组合。数据结构和控制结构可根据需要变化。在一些实施方案中,蜂窝调制解调器处理器200可具有高吞吐量以支持高速蜂窝网络(例如,对于5g网络,12gbps)。
49.为了提供高吞吐量,蜂窝调制解调器处理器可包括多个流水线,其中每个流水线可包括多个专用电路,该多个专用电路被配置为执行与数据通信相关联的特定操作;示例包括编码、解码、交织、速率匹配、解交织、解速率匹配、计算循环冗余校验(crc)位、执行crc等。在一些实施方案中,可使用通用架构框架来实施流水线中的一些或全部,该通用架构框架提供具有与流水线或流水线阶段的特定功能无关的数据同步机制的灵活(基于固件的)控制。
50.图3示出了根据一些实施方案的用于处理器(诸如蜂窝调制解调器处理器200)的流水线310的架构的简化框图。流水线310呈现为广义架构模型,其可用于在各种信号处理或其他数据处理流水线(包括蜂窝调制解调器处理器200中的任何或全部流水线210)中提供数据同步(或流控制)。在一些实施方案中,流水线310可以是可执行单指令多数据(simd)指令以增加并行性的向量流水线。流水线310包括多个处理引擎。在该示例中,处理引擎包括向量加载引擎321、两个中间处理引擎322、323和向量存储引擎324。向量加载引擎321与读取接口312通信以将存储在l1存储器中的数据(例如,图2中所示的l1存储器222)读取到在流水线310本地的缓冲存储器312中。在一些实施方案中,向量加载引擎321还可对从l1存储器读取的数据执行其他操作。例如,在流水线310实施pdsch处理流水线的情况下,向量加载引擎321可在将数据写入缓冲存储器312之前对从l1存储器读取的数据执行解扰。中间处理引擎322可通过向量加载引擎321对写入缓冲存储器312的数据执行进一步的操作,并且可将此类操作的结果写回缓冲存储器312。类似地,中间处理引擎323可通过中间处理引擎322对写入缓冲存储器312的数据执行进一步的操作,并且可将此类操作的结果写回缓冲存储器312。尽管示出了两个中间处理引擎,但是应当理解,可在流水线中包括任何数量的中间处理引擎。向量存储引擎324可与l1存储器(例如,图2中所示的l1存储器222)的写入接口314通信。例如,向量存储引擎324可通过中间处理引擎323(最后的中间处理引擎)读取写入缓冲存储器312的数据并将该数据写入l1存储器。在一些实施方案中,向量存储引擎324还可在将数据写入l1存储器之前对从缓冲存储器312读取的数据执行其他操作。每个处理引擎321-324可包括实施与蜂窝数据处理有关的特定功能的逻辑电路。例如,在pdsch流水线中,处理引擎可包括执行解扰、解交织和速率恢复、解码以及错误检测和校正的处理引擎。
51.处理引擎321-324可作为流水线的阶段进行操作,其中稍后阶段对较早阶段的输
出进行操作。由于阶段之间的数据依赖性,处理引擎321-324通常不在同一时间对同一数据集进行操作。然而,流水线310可作为多线程流水线进行操作,其中不同的处理引擎同时对不同的独立数据集进行操作。例如,中间处理引擎322可对第一数据集进行操作,而向量加载引擎321加载第二数据集。线程可被限定为对应于每个数据集。每个线程可具有相关的上下文。例如,对于ldpc编码,不同的线程可使用不同的基础图、代码块大小等。处理引擎321-324中的每一者可包括存储限定该处理引擎的当前上下文的参数值的参数寄存器;当切换线程时,可将新参数值加载到参数寄存器中。
52.每个处理引擎321-324可实施复杂的操作(例如,ldpc解码),该复杂的操作可能要花费许多时钟周期来完成。在同一流水线中的不同处理引擎中实施的操作可能要花费不同时间量来完成,并且在一些情况下,操作可能要花费可变时间量,例如,这取决于线程的参数值。因此,流水线310可受益于处理引擎321-324之间的数据同步(或流控制),以确保在下游处理引擎尝试读取数据之前,上游处理引擎将用于特定操作的该数据写入缓冲器312。
53.根据一些实施方案,可使用基于固件的控制和基于硬件的联锁机制的组合来提供流水线诸如流水线310中的数据同步,该基于硬件的联锁机制可与流水线中实施的特定操作无关。例如,流水线310可由控制处理器340控制。控制处理器340可以是例如标量或超标量微处理器,其实施指令集架构(isa),诸如最初由intel开发的x86 isa和由amd和intel开发的相关x86-64 isa、来自arm holdings的arm和aarch64 isa、来自ibm/motorola的power isa和powerpc isa、risc-v或其他isa,包括定制isa。因此,控制处理器340可包括常规微处理器部件,诸如指令存储器和相关联的电路,以获取和解码指令并将指令调度给处理引擎或功能单元以供执行。在一些实施方案中,控制处理器340可包括功能单元,诸如通用alu,可向这些功能单元调度(例如,添加、比较等)一些指令。
54.控制处理器340所支持的isa可限定控制处理器340调度给流水线310(例如,流水线310的特定处理引擎321-324)的指令集。例如,特定指令可被限定为:出于执行编码过程(诸如ldpc编码)的目的而被调度用于由流水线310中的处理引擎321-324中的一个处理引擎执行。调度给流水线310的指令可以是向量(simd)指令,而不管控制处理器340是否为向量处理器。在一些情况下,调度给流水线的指令可包括上下文(特定于线程的)参数,诸如缓冲器312内用于读取和/或写入数据的地址范围,以及指定要执行的操作的方面的其他参数(例如,速率匹配参数、用于编码或解码的代码块大小等)。另外或相反,isa可限定参数设置指令,这些参数设置指令向流水线310提供线程的上下文参数中的一些或全部。
55.要由控制处理器340执行的程序代码可作为固件提供。例如,控制处理器340的指令存储存储器可在用户设备(例如,用户设备100)的安装或升级期间加载有代码,并且控制处理器340可执行固件代码。
56.程序代码中的指令顺序可(隐式地)限定数据依赖性。例如,如果写入缓冲存储器312中的特定存储器位置的指令在从该位置读取的指令之前,则限定了写后读依赖性。如果从缓冲存储器312中的特定存储器位置读取的指令在写入该位置的指令之前,则限定了读后写依赖性。如果两个不同指令指定写入缓冲存储器312中的相同位置,则限定了写后写依赖性。如果不按相对于彼此的顺序执行具有数据依赖性的指令,则可能读取错误的数据,从而导致不正确的输出数据。在一些实施方案中,控制处理器340按顺序发出所有指令,这可有利于识别流水线310内的数据依赖性。在一些情况下,到不同处理引擎321-324的指令之
间可存在数据依赖性。例如,在线程内,处理引擎323可对来自处理引擎322的输出数据进行操作,该输出数据涉及写后读依赖性。在存在处理引擎之间的数据依赖性的情况下,后一处理引擎(例如,处理引擎323)应等待,直到前一处理引擎(例如,处理引擎322)已完成写入其输出数据才开始读取其输入数据。
57.为了管理处理引擎321-324之间的数据依赖性,流水线310可包括联锁控制器330。联锁控制器330可以是专用逻辑电路,并且可具有实施虚拟寄存器文件332的相关联存储器。例如,可使用查找表或其他可寻址存储器结构来实施虚拟寄存器文件332。(应当理解,如本文所用,术语“虚拟寄存器文件”是指物理存储器结构。如下所述,物理存储器结构可用于基于对虚拟地址的参考来存储数据依赖性信息。)如下所述,联锁控制器330可使用虚拟寄存器文件332来跟踪数据依赖性并确定数据依赖性何时被清除,使得特定处理引擎可执行特定指令。例如,在接收到来自控制处理器340的调度指令时,处理引擎321-324中的任一个处理引擎可向联锁控制器330发送指定输入地址范围(其可被限定在虚拟地址空间中)的读取锁定请求和/或指定输出地址范围(其可被限定在相同虚拟地址空间中)的写入锁定请求。联锁控制器330可更新虚拟寄存器文件332以例如通过将读取锁定指示标识或写入锁定指示标识添加到与指定地址相关联的锁定列表中,来对该地址建立读取锁定和写入锁定。在完成指令(或与该指令相关联的读取操作或写入操作)时,处理引擎可发送指定哪个读取锁定或写入锁定将被清除的清除锁定请求,并且联锁控制器330可更新虚拟寄存器文件332以清除读取锁定或写入锁定。在执行指令之前,处理引擎321-324可使用相关虚拟地址来轮询联锁控制器330,并且如果轮询的虚拟地址清除了数据依赖性,则联锁控制器330可利用“授权”信号来响应,并且如果轮询的虚拟地址未清除数据依赖性,则联锁控制器可利用“拒绝”信号来响应。处理引擎321-324可等待,直到从联锁控制器330接收到授权信号才执行指令(同时继续轮询联锁控制器330)。因此,联锁控制器330可提供在流水线310中的处理引擎321-324之间的数据同步。
58.应当指出的是,联锁控制器330的操作可独立于由任何处理引擎执行的特定操作或给定操作可能需要花费的时间。只要每个处理引擎在接收到指令时提供读取锁定请求和写入锁定请求,并且推迟执行,直到接收到授权信号,联锁控制器330就可管理数据依赖性。
59.在一些实施方案中,每个处理引擎321-324可使用统一接口来与控制处理器340和联锁控制器330通信。图4示出了根据一些实施方案的流水线310的更详细的框图。如上所述,流水线310包括一组处理引擎,其包括向量加载引擎321、中间处理引擎322-323和向量存储引擎324。图4还示出了代表性处理引擎322的部件。(应当理解,其他处理引擎可包括类似的部件。)处理引擎322可包括调度队列接口402、调度队列403、指令接口404和一个或多个功能单元422(示出了两个功能单元422-a和422-b;通常,处理引擎可具有一个或多个功能单元)。每个功能单元422可被实施为向量(simd)功能单元,该向量(simd)功能单元包括被配置为对多个输入并行地执行指令(或操作)的专用逻辑电路。指令可具有任意复杂性。例如,支持4g和5g网络两者的pdsch处理流水线可包括执行解码的处理引擎322的实例。在这种情况下,功能单元422-a可实施针对4g网络的turbo解码,而功能单元422-b实施针对5g网络的ldpc解码。针对特定数据块执行turbo解码还是ldpc解码可由来自控制处理器340的指令来确定。例如,可存在调用功能单元422-a的特定指令和调用功能单元422-b的不同特定指令。每个功能单元422还可包括寄存器以存储在指令执行期间的数据和/或控制指令执
行的参数。应当理解,每个功能单元422是不同的物理电路;不同的功能单元422不共享部件。类似地,每个处理引擎321-324是不同的物理电路。
60.应当理解,流水线310和/或其部件(例如,处理引擎322)可包括附加部件。例如,处理引擎322(或流水线310中的任何处理引擎)可包括存储关于接收到和/或执行的指令的信息的控制和状态寄存器(csr)424、数据寄存器和/或不与其他处理引擎共享的其他内部寄存器。在一些实施方案中,可由控制处理器340读取或写入处理引擎的csr和/或其他内部寄存器。例如,控制处理器340可将指令调度给处理引擎以从特定csr读取或写入特定csr。在一些实施方案中,支持阻塞式读取和非阻塞式读取两者。寄存器读取指令和寄存器写入指令可通过调度队列接口402在调度队列403中排队,并且与到相同处理引擎的其他指令一起按顺序执行。在一些实施方案中,处理引擎(例如,处理引擎322)的内部寄存器不在处理引擎之间共享,并且当寄存器读取指令或寄存器写入指令到达调度队列403的前部时,可在不轮询联锁控制器330的情况下执行寄存器读取指令或寄存器写入指令。在一些实施方案中,寄存器访问指令的执行可等待,直到已完成任何前述指令的执行。向量状态寄存器和向量标记寄存器可以类似的方式实施。接触本公开的本领域技术人员将能够提供适当的一组状态寄存器和/或标记寄存器和相关联逻辑电路,以支持使用流水线310和控制处理器340来执行指令。在各种实施方案中,在两个或更多个处理引擎之间共享的任何寄存器可具有允许联锁控制器330管理该寄存器的数据依赖性的虚拟地址,而由仅一个处理引擎使用的任何寄存器可能具有或可能不具有虚拟地址,这取决于具体实施。
61.如上文参考图3所述,可使用在流水线310本地的缓冲器312来在处理引擎321-324之间传送数据。在一些情况下,缓冲器可专用于流水线中的一对连续处理引擎。例如,图4示出了向量加载引擎321写入数据并且中间处理引擎322读取数据的专用缓冲器416。在其他情况下,缓冲器可由流水线中的多于两个处理引擎共享。例如,图4示出了具有写入接口412和读取接口414的共享缓冲器410。中间处理引擎322和323各自将数据写入共享缓冲器410,并且中间处理引擎323和向量存储引擎324各自从共享缓冲器410读取数据。写入接口412和读取接口414可实施横杆和仲裁方案,使得流水线310中的任何处理引擎321-324(或处理引擎321-324的任何子集)可写入共享缓冲器410中的任何位置或从该共享缓冲器中的任何位置读取。在特定流水线310内,可使用共享缓冲器410和专用缓冲器416的任何组合,并且在给定蜂窝调制解调器处理器(例如,处理器200)内,不同的流水线可具有不同的缓冲器配置。可在每个流水线内限定流水线地址空间,使得缓冲器416和410中的每个位置(和/或流水线中存在的任何其他缓冲器)具有唯一地址。在一些实施方案中,流水线地址空间可以是经由简单操作而转变为或映射到缓冲器416、410中的物理位置的虚拟地址空间(例如,虚拟地址可以是具有预加缓冲器标识符的物理地址,或者虚拟地址可与物理地址相同);可使用虚拟地址和物理地址之间的各种映射,前提条件是每个虚拟地址映射到流水线的缓冲器中的不同物理位置。在一些实施方案中,虚拟地址空间还可包括表示除了流水线中的缓冲器之外的其他位置的虚拟地址。例如,虚拟地址空间中的虚拟地址可被限定用于l1存储器(或任何共享存储器)中的位置和/或用于处理引擎(例如,处理引擎322中的任何或全部处理引擎)内的内部寄存器,诸如csr 424、内部数据寄存器或流水线310中的任何其他寄存器或数据存储位置。
62.功能单元422的操作可由调度队列接口402、调度队列403和指令接口404来控制。
请求。每个“轮询”请求可识别虚拟地址范围和要执行的操作(读取或写入)。决策逻辑534可使用虚拟地址范围来读取数据结构532,以基于读取锁定和写入锁定的存在或不存在来确定是否已满足该地址范围的所有数据依赖性。下面描述了决策逻辑的具体示例。如果已满足所有数据依赖性,则决策逻辑432可向发送“轮询”请求的处理引擎发送“授权”响应;如果不满足,则决策逻辑432可发送“拒绝”响应。
67.在一些实施方案中,来自处理引擎的每个消息可包括处理引擎标识符;另选地,每个处理引擎321-324可连接到接口536(在图5中示出)的不同(物理)端口,并且端口标识符可用于识别处理引擎。其他具体实施也是可能的,前提条件是虚拟寄存器文件332指示哪些地址具有建立的读取锁定和/或写入锁定,并且是由哪些处理引擎建立的。
68.在一些实施方案中,处理引擎接口536可实施仲裁逻辑以优先化可在相同时钟周期接收到的请求。例如,仲裁逻辑可根据分配给流水线中的处理引擎的序列来优先化请求(例如,上游处理引擎可优先于下游处理引擎),或者可使用循环优先化逻辑。在一些实施方案中,可使用时分复用(tdm),其中每个处理引擎被分配特定时钟周期,在此期间将对每个处理引擎向联锁控制器330的请求进行服务。可例如通过以下方式来实施tdm:在每个处理引擎中包括定时逻辑,以确定处理引擎何时发送请求;或在接口536中提供缓冲器,以存储来自不同处理引擎的请求并以循环方式选择下一个请求。可使用各种仲裁方案。
69.应当理解,流水线310是示例性的,并且变型和修改是可能的。可在流水线中包括任何数量的处理引擎,并且处理引擎可实施任何操作,包括与4g和/或5g数据处理有关的操作。虚拟地址空间可根据需要来限定。处理引擎的调度队列可保持任何数量的(一个或多个)条目,并且不同处理引擎的调度队列可具有不同的深度。处理引擎可包括一个或多个功能单元;在存在多个功能单元的情况下,每个功能单元可具有不同的相关联指令。
70.在一些实施方案中,处理引擎可包括执行循序操作的多个功能单元,并且处理引擎可包括硬件定序器以控制不同功能单元中的操作的定序。硬件定序器可包括联锁控制器330的实例和在一个处理引擎本地的虚拟寄存器文件332。换句话说,流水线诸如流水线310内的任何处理引擎可实施“子流水线”,并且多个子流水线可存在于给定流水线内。在处理引擎实施子流水线的情况下,控制处理器(例如,控制处理器340)可仅调度用于子流水线的指令,并且处理引擎可被配置为响应于该指令而相继地执行该子流水线的所有阶段。
71.现在将描述可使用联锁控制器(例如,联锁控制器330)在流水线(例如,流水线310)内实施的特定数据同步操作的示例。图6、图7和图8示出了根据一些实施方案的可在流水线的每个处理引擎中实施的流控制操作。例如,所示操作可在流水线310的每个处理引擎321-324中实施。图6示出了根据一些实施方案的可在处理引擎接收到指令时执行的过程600。过程600可例如在每个处理引擎321-324的调度队列接口402中实施。在框602处,在调度队列接口402处,例如从如上所述的控制处理器340接收新指令。当接收到该新指令时,可将该新指令添加到调度队列403。在框604处,可从该指令中提取输入(读取)虚拟地址范围和输出(写入)虚拟地址范围。在框606处,可向联锁控制器330发送对输入虚拟地址范围的读取锁定请求和对输出虚拟地址范围的写入锁定请求。下面描述了通过联锁控制器330处理读取锁定请求和写入锁定请求。应当理解,一些指令可能引起仅生成读取锁定请求或仅生成写入锁定请求。例如,向向量加载引擎321发出的“加载”指令可指定l1存储器空间(其可根据需要在流水线的虚拟地址空间内部或外部)中的读取地址范围和流水线的虚拟地址
空间中的写入虚拟地址;相反地,向向量存储引擎324发出的向量存储指令可指定流水线的虚拟地址空间中的读取地址范围和l1存储器空间(其同样可在流水线的虚拟地址空间内部或外部)中的写入地址范围。在一些实施方案中,在流水线的缓冲器外部的任何输入(或输出)地址不会引起生成读取锁定(或写入锁定)请求。因此,在l1存储器空间未被表示为在流水线的虚拟地址空间中的一些实施方案中,向量加载指令可引起生成写入锁定请求而不是读取锁定请求,而向量存储指令可引起生成读取锁定请求而不是写入锁定请求。在l1存储器空间被表示为在流水线的虚拟地址空间中的情况下,向量加载指令或向量存储指令可生成读取锁定请求和写入锁定请求两者。在l1存储器空间被表示为在流水线的虚拟地址空间中的情况下,联锁控制器可管理流水线内的指令(例如,加载指令和存储指令)之间的l1存储器数据依赖性。如上所述,l1存储器可在多个流水线之间共享,并且l1存储器结构可包括与跨不同流水线协调访问请求有关的附加特征。
72.在执行过程600之后,调度队列接口402可将指令进行排队(例如,在调度队列403中)以用于执行,直到已执行所有先前所接收到的指令。此时,指令接口404可从调度队列403接收指令作为要执行的下一个指令。图7示出了根据一些实施方案的用于在处理引擎(例如,处理引擎322)中执行指令的过程700的流程图。在框702处,可接收要执行的下一个指令。例如,指令接口404可从调度队列403读取下一个指令。在框704处,处理引擎可轮询联锁控制器以确定针对指令的输入数据是否准备好被读取,并且针对指令的输出数据是否可被安全地写入输出缓冲器(例如,缓冲器410或缓冲器416,视情况而定)。例如,处理引擎322可向联锁控制器330发送包括针对指令的输入虚拟地址范围的第一“轮询”请求和包括针对指令的输出虚拟地址范围的第二“轮询”请求。在框706处,处理引擎可从联锁控制器接收对每个轮询请求的响应。例如,联锁控制器330可利用“授权”或“拒绝”来响应每个轮询请求。如果在框708处,对一个或两个轮询请求的响应不是“授权”,则过程700可返回到框704并再次轮询联锁控制器。在一些实施方案中,过程700可在再次轮询之前等待一个或多个时钟周期。在处理引擎322最初在框704处发送两个“轮询”请求的一些实施方案中,如果对一个请求的响应是“授权”并且对另一个请求的响应是“拒绝”,则在框704的下一次迭代时,过程700可仅发送尚未被授权的轮询请求。以此方式,过程700可继续轮询联锁控制器,直到已针对输入虚拟地址范围和输出虚拟地址范围授权请求。
73.如果在框708处,两个请求都已被授权,则在框710处,处理引擎可执行指令。例如,处理引擎322可启用功能单元422来执行其操作。一旦启用,功能单元422就可继续操作而无需进一步的外部控制。根据功能单元422的说明和具体实施,功能单元422的操作可包括:将来自通过输入虚拟地址范围识别的缓冲器位置的数据移动到功能单元422内的操作数寄存器中,执行计算和/或逻辑操作,以及/或者将数据从操作数寄存器移动到通过输出虚拟地址范围识别的缓冲器位置。在一些实施方案中,功能单元422可多次读取缓冲器位置并且/或者多次写入缓冲器位置。由于处理引擎322在整个执行过程中保持读取锁定和写入锁定,因此除了功能单元422之外,锁定缓冲器中的数据未被修改。在框712处,可完成指令的执行,所述完成指令的执行可包括例如将针对指令的最终输出数据(在与输出虚拟地址范围对应的位置处)写入缓冲器416。
74.在框714处,一旦完成执行,处理引擎就可向联锁控制器发送消息,以清除针对输入虚拟地址范围的读取锁定并且清除针对输出虚拟地址范围的写入锁定。例如,处理引擎
322可向联锁控制器330发送指示应清除针对输入虚拟地址范围的读取锁定的第一“清除”请求,并且向联锁控制器330发送指示应清除针对输出虚拟地址范围的写入锁定的第二“清除”请求。在一些实施方案中,框714可在完成指令执行之后进行,所述完成指令执行可包括将来自功能单元422内的寄存器的输出数据传递到缓冲器(例如,缓冲器410或缓冲器416,视情况而定)。
75.可针对调度队列403中的每个指令执行过程700。在一些实施方案中,处理引擎一次针对一个指令执行过程700,并且用于第二指令的过程700可在完成第一指令的执行之后开始。其他具体实施也是可能的。例如,在一些实施方案中,用于第二指令的过程700可在框710处执行第一指令时开始。根据处理引擎的具体实施,如果在完成第一指令的执行之前,对第二指令的轮询请求被授权(框708的结果为“是”),则可开始第二指令的执行(例如,在第二指令的执行不干扰第一指令的执行的情况下),或者用于第二指令的过程700可等待直到已完成第一指令的执行才开始在框710处执行。如上所述,指令接口可被设计成按顺序发出指令,在这种情况下,针对除接下来要执行的指令之外的任何指令轮询联锁控制器将毫无益处。流水线中的不同处理引擎可彼此独立地执行过程700,以处理其相应调度队列中的指令。(因此,如果数据依赖性允许,则调度给不同处理引擎的指令可相对于彼此乱序地执行。)
76.在过程700中,指令执行仅在读取轮询请求和写入轮询请求两者都被授权之后才开始,并且处理引擎保持读取锁定和写入锁定以便完成指令执行。在一些实施方案中,可能期望以更细的粒度管理读取锁定和写入锁定。以举例的方式,图8示出了根据一些实施方案的用于在处理引擎(例如,处理引擎322)中执行指令的另一个过程800的流程图。过程800可大体上类似于过程700。在框802处,可接收要执行的下一个指令。例如,指令接口404可从调度队列403读取下一个指令。在框804处,处理引擎可轮询联锁控制器以确定针对指令的输入数据是否准备好被读取。例如,处理引擎322可向联锁控制器330发送包括针对指令的输入虚拟地址范围的“轮询”请求。在框806处,处理引擎可从联锁控制器接收响应。例如,联锁控制器330可利用“授权”或“拒绝”来响应。如果在框808处,响应是“拒绝”(或不是“授权”),则过程800可返回到框804并再次轮询联锁控制器。在一些实施方案中,过程800可在再次轮询之前等待一个或多个时钟周期。
77.如果在框808处,响应是“授权”,则在框810处,处理引擎可开始执行指令。例如,处理引擎322可将来自缓冲器416的输入数据(在与输入虚拟地址范围对应的位置处)读取到适当功能单元422的输入寄存器中并启用功能单元422来执行其操作。一旦启用,功能单元422就可继续生成输出数据而无需进一步的外部控制。输出数据可临时存储在功能单元422内的寄存器中。
78.在框812处,处理引擎可向联锁控制器发送消息以清除针对输入虚拟地址范围的读取锁定。例如,处理引擎322可向联锁控制器330发送指示应清除针对输入虚拟地址范围的读取锁定的“清除”请求。在各种实施方案中,框812可在完成读取针对来自功能单元422的输入缓冲器的指令的所有输入数据之后的任何时间进行,包括在完成指令执行之后进行。
79.在框814处,处理引擎可开始轮询联锁控制器以确定针对指令的输出数据是否可被安全地写入输出缓冲器(例如,缓冲器410或缓冲器416,视情况而定)。例如,处理引擎422
可向联锁控制器330发送包括针对指令的输出虚拟地址范围的“轮询”请求。在一些实施方案中,框814可在功能单元422开始将任何数据写入输出缓冲器之前的任何时间点进行。例如,如果功能单元422操作为在处理引擎322的本地寄存器中产生一组输出数据,则输出数据可保持在本地寄存器中,直到处理引擎322确定输出数据可写入输出缓冲器。在框816处,处理引擎可从联锁控制器接收响应。例如,联锁控制器330可利用“授权”或“拒绝”来响应。如果在框818处,响应是“拒绝”(或不是“授权”),则过程800可返回到框814并再次轮询联锁控制器。在一些实施方案中,过程800可在再次轮询之前等待一个或多个时钟周期。如果在框818处,响应是“授权”,则在框820处,处理引擎可将来自功能单元的寄存器的输出数据写入适当的缓冲器。例如,处理引擎322可将来自功能单元422的寄存器的输出数据写入共享缓冲器410。在框822处,在写入输出数据之后,处理引擎可清除写入锁定。例如,处理引擎322可向联锁控制器330发送指示应清除针对输出虚拟地址范围的写入锁定的“清除”消息。此后,可针对调度队列403中的下一个指令重复过程800。
80.如过程700和800所示,可改变处理引擎开始针对虚拟输入地址和/或虚拟输出地址轮询联锁控制器的时间点。在开始执行之前针对虚拟输入地址和虚拟输出地址两者进行轮询(如在过程700中)可简化逻辑,并且在执行指令可能涉及针对虚拟地址或虚拟地址范围的一系列读取和/或写入操作的情况下,可能特别适当。类似地,可改变处理引擎清除读取锁定和/或写入锁定的时间点。在执行指令期间发生的最后读取操作(或写入操作)一完成就清除读取锁定(或写入锁定),可帮助减少后续指令的等待时间,但是对于一些类型的指令,例如,执行涉及多个读取-修改-写入操作的指令,可能期望等待直到指令结束。
81.在过程600、700和800中,联锁控制器(例如,联锁控制器330)可接收“锁定”请求以建立读取锁定或写入锁定,可接收“清除”请求以移除先前建立的读取锁定或写入锁定,并且可接收“轮询”请求以查询是否已满足特定读取或写入操作的数据依赖性。图9和图10是示出联锁控制器诸如联锁控制器330的操作的流程图。
82.图9示出了根据一些实施方案的可由联锁控制器(例如,联锁控制器330)执行的过程900的流程图。过程900可在从流水线(例如,流水线310)的处理引擎接收消息时以连续循环的方式执行。在框902处,从处理引擎接收消息。例如,如图5所示,可在联锁控制器330的处理引擎接口536处接收消息。在一些实施方案中,框902可包括在多个请求之间仲裁以选择用于处理的请求,例如,如上文参考图5所述。
83.如果在框904处,消息是锁定消息,则在框906处,联锁控制器可通过添加关于在读取锁定消息或写入锁定消息中指定的虚拟地址范围的读取锁定信息或写入锁定信息来更新虚拟寄存器文件(vrf)。所添加的特定信息可取决于虚拟寄存器文件332的特定具体实施(例如,数据结构532)。例如,在一些实施方案中,当特定处理引擎(例如,处理引擎322)请求读取锁定或写入锁定时,联锁控制器330可将条目添加到与消息中指定的虚拟地址范围内的一个或多个地址相关联的锁定列表;该条目可包括请求处理引擎的标识符和锁定类型(读取锁定或写入锁定)。该列表可以是反映接收到锁定请求的顺序的有序列表。
84.如果消息不是锁定消息,则过程900前进到框912。如果在框912处,消息是清除消息,则在框914处,联锁控制器可通过移除(清除)清除消息中指定的读取锁定信息或写入锁定信息来更新虚拟寄存器文件。例如,如果添加读取锁定信息或写入锁定信息是通过将条目添加到锁定列表来实施的,则清除读取锁定信息或写入锁定信息可通过从锁定列表中删
除该条目来实施。在一些实施方案中,删除具有相同处理引擎和在清除消息中指定的地址范围的最旧条目。
85.如果消息不是锁定消息或清除消息,则过程900前进到框916。如果在框916处,消息是轮询消息,则在框918处,联锁控制器可基于是否已满足在虚拟寄存器文件中反映的所有相关数据依赖性调用决策逻辑(例如,决策逻辑534)来生成响应(例如,授权或拒绝)。图10是根据一些实施方案的决策逻辑过程1000的流程图。过程1000可例如在图5所示的决策逻辑534中实施,并且可在过程900的框918处执行。
86.在框1002处,决策逻辑可接收轮询请求,该轮询请求可包括虚拟地址范围和对轮询请求是否是针对输入(读取)地址范围或输出(写入)地址范围的指示。如果轮询请求是针对输入地址范围的,则关注的数据依赖性是写后读依赖性。如果轮询请求是针对输出地址范围的,则关注的数据依赖性包括读后写依赖性和写后写依赖性两者。在框1004处,如果轮询请求是针对输入地址范围的,则过程1000可前进到框1006。在框1006处,过程1000可检查在与轮询请求对应的读取锁定之前建立的对该范围内的任何地址的任何写入锁定。在一些实施方案中,与轮询请求对应的读取锁定可被认为是针对轮询请求的地址范围的最早读取锁定,该轮询请求是由提出该轮询请求的处理引擎所请求的。例如,如果虚拟寄存器文件332存储虚拟地址或虚拟地址范围的锁定列表,则框1006处的处理可包括读取在输入地址范围内的每个地址的锁定列表,以确定在与发送轮询请求的处理引擎相关联的读取锁定之前是否存在任何写入锁定。较早的写入锁定指示应在请求处理引擎开始读取之前清除的写后读数据依赖性。在框1008处,如果存在任何较早的写入锁定,则应拒绝请求,并在框1012处发送“拒绝”消息。如果不存在较早的写入锁定,则应授权请求,并在框1010处发送“授权”消息。
87.如果在框1004处,轮询请求是针对输出地址范围的,则过程1000可前进到框1014。在框1014处,过程1000可检查在与轮询指令对应的写入锁定之前建立的对该范围内的任何地址的任何写入锁定。在一些实施方案中,与轮询请求对应的写入锁定可被认为是针对轮询请求的地址范围的最早写入锁定,该轮询请求是由提出该轮询请求的处理引擎所请求的。例如,如果虚拟寄存器文件332存储虚拟地址或虚拟地址范围的锁定列表,则框1014处的处理可包括读取在输入地址范围内的每个地址的锁定列表,以确定在与发送轮询请求的处理引擎相关联的写入锁定之前是否存在任何写入锁定。较早的写入锁定指示应在请求处理引擎开始写入之前清除的写后写数据依赖性。在框1016处,如果存在任何较早的写入锁定,则应拒绝请求,并在框1012处发送“拒绝”消息。如果不存在较早的写入锁定,则在框1018处,过程1000可检查在与轮询指令对应的写入锁定之前建立的对该范围内的任何地址的任何读取锁定。在一些实施方案中,与轮询请求对应的写入锁定可被认为是针对轮询请求的地址范围的最早写入锁定,该轮询请求是由提出该轮询请求的处理引擎所请求的。例如,如果虚拟寄存器文件332存储虚拟地址或虚拟地址范围的锁定列表,则框1018处的处理可包括读取在输入地址范围内的每个地址的锁定列表,以确定在与发送轮询请求的处理引擎相关联的写入锁定之前是否存在任何读取锁定。较早的读取锁定指示应在请求处理引擎开始写入之前清除的读后写数据依赖性。在框1020处,如果存在任何较早的读取锁定,则应拒绝请求,并在框1012处发送“拒绝”消息。如果不存在较早的读取锁定,则应授权请求,并在框1010处发送“授权”消息。可在每次接收到轮询请求时执行过程1000。
88.再次参考图9,在过程900的一些实施方案中,可忽略未被识别为锁定、清除或轮询请求的任何消息。在其他实施方案中,此类消息可生成响应,例如,指示消息未被处理的否定确认(“nack”)。
89.应当理解,图6至图10所示的过程为例示性的,并且变型和修改是可能的。可在逻辑允许的范围内修改操作顺序,可组合单独描述的操作,并且可包括未具体描述的附加操作。例如,可修改在指令执行期间处理引擎清除读取锁定或写入锁定的特定时间点,前提条件是读取锁定(写入锁定)直到处理引擎已完成从与锁定相关联的地址范围读取数据(将数据写入与锁定相关联的地址范围)才被清除。
90.在一些实施方案中,处理引擎可针对地址范围的一部分清除读取锁定(或写入锁定)。锁定的此类部分清除可允许另一个处理引擎更早地开始执行;折衷包括要由联锁控制器处理的更多请求和处理引擎中的附加逻辑,以确定部分清除何时是安全的。
91.在一些实施方案中,轮询可被通知协议替换,在该通知协议中,联锁控制器确定哪些处理引擎具有清除数据依赖性的指令,并通知这些处理引擎而无需等待轮询。(然而,通知协议可能需要联锁控制器中的更复杂的决策逻辑。)在一些实施方案中,流水线冲刷操作可被限定为清除来自调度队列的所有指令并清除来自虚拟寄存器文件的所有读取锁定和写入锁定。
92.为了进一步说明控制处理器(例如,控制处理器340)和联锁控制器(例如,联锁控制器330)可如何为流水线(例如,流水线310)提供数据同步,参考图11,该图示出了根据一些实施方案的发射前端流水线1110的简化框图。发射前端流水线1110可以是上述流水线310的实例。向量加载引擎1121和向量存储引擎1124可与上述向量加载引擎321和向量存储引擎324类似或相同。处理引擎1122可实施用于上行链路信道的编码器算法。例如,处理引擎1122可包括实施用于4g pusch信道的turbo编码器的功能单元和/或实施用于4g pucch信道的卷积编码器的功能单元。处理引擎1123可包括实施4g pusch和/或4g pucch信道的交织和速率匹配的功能单元。流水线1110还可包括处理引擎1121-1124可访问的一个或多个缓冲器1112。控制处理器1140和联锁控制器1130可与控制处理器340和联锁控制器330类似或相同。
93.流水线1110的操作可使用由控制处理器1140执行的程序代码(例如,固件)来限定。图12是根据一些实施方案的用于使用流水线1110对数据块进行编码的过程1200的流程图。将首先从程序代码的角度来描述过程1200。在框1202处,例如通过调用加载指令来将来自l1存储器的数据块加载到流水线1110的缓冲器1112中。数据块被加载到其中的缓冲器位置可被指定为地址范围(a0至an)。为了简化描述,该示例中的地址被指定为流水线虚拟地址空间中的虚拟地址。在一些实施方案中,程序代码可指定物理地址,并且处理引擎1121-1124当向联锁控制器1130发送消息时可转变为虚拟地址。可使用任何适当的寻址方案来指定在l1存储器中读取数据块的位置。在框1204处,确定用于编码操作的代码块大小。该确定可基于信道条件、用于特定蜂窝网络的支持的代码块大小和/或其他信息;该特定确定与理解本公开并不相关,并且可能涉及读取参数并执行控制处理器1140内的算术运算。在框1206处,确定用于代码块的起始虚拟地址(ai)和结束虚拟地址(aj)。例如,编码可在数据块的第一虚拟地址(地址a0)处开始,并且循序地进行到最后一个虚拟地址(an)。如果数据块大小大于代码块大小,则编码可在与一个代码块对应的地址分块中进行,并且虚拟地址ai
和aj可使用算术运算来计算(例如,基于代码块大小递增起始地址和结束地址)。在框1208处,例如通过调用编码指令来对分块进行编码。要编码的代码块的位置可被指定为存储代码块的输入虚拟地址范围(ai至aj),并且用于存储所得已编码数据的缓冲器位置可被指定为输出虚拟地址范围(bi至bj)。输入虚拟地址范围和输出虚拟地址范围可具有不同的大小(例如,在编码向数据添加位的情况下,输出虚拟地址范围可大于输入虚拟地址范围)。在框1210处,例如通过调用适当的“irm”指令来对已编码分块进行交织和速率匹配。irm指令可指定存储已编码代码块的输入虚拟地址范围(bi至bj),以及输出虚拟地址范围(ci至cj)。输入虚拟地址范围和输出虚拟地址范围可具有不同的大小(例如,在速率匹配向数据添加位的情况下,输出虚拟地址范围可大于输入虚拟地址范围)。在框1212处,可例如通过调用存储指令来将经速率匹配的输出数据存储到l1存储器中。应读取数据的缓冲器位置可被指定为虚拟地址范围ci至cj。可使用任何适当的寻址方案来指定在l1存储器中写入数据的位置。在框1214处,如果尚未对整个数据块进行编码(例如,如果aj小于an),则过程1200可返回到框1206以确定针对下一个代码块的地址范围。一旦已对整个数据块进行编码,过程1200就可结束并且可在框1220处开始其他处理(包括过程1200的新迭代,以对另一个数据块进行编码)。
94.现在将从控制处理器1140使用流水线1110来执行程序代码的角度来描述过程1200。(下文描述了调度给流水线1110的指令的执行。)在框1202处,控制处理器1140可将加载指令调度给流水线1110,该加载指令在该流水线中进入向量加载引擎1121的调度队列。如上文参考过程600(图6)所述,调度队列接口可发送关于虚拟地址范围a0至an的写入锁定消息,并且联锁控制器1130接收该消息并且例如通过将条目添加到锁定列表来建立写入锁定。在框1204和框1206处,控制处理器1140可执行指令,这些指令引起确定代码块大小以及用于代码块的起始虚拟地址和结束虚拟地址。这些指令可以是在控制处理器1140内本地执行的标量指令。在框1208处,控制处理器1140可将编码指令调度给流水线1110,该加载指令在该流水线中进入编码器引擎1122的调度队列。调度队列接口向联锁控制器330发送关于输入虚拟地址范围ai至aj的读取锁定消息和关于输出虚拟地址范围bi至bj的写入锁定消息,该联锁控制器接收这些消息并且例如通过将条目添加到锁定列表来建立读取锁定和写入锁定。在框1210处,控制处理器1140可将irm指令调度给流水线1110,该irm指令在该流水线中进入交织和速率匹配引擎1123的调度队列。调度队列接口向联锁控制器330发送关于输入虚拟地址范围bi至bj的读取锁定消息和关于输出虚拟地址范围ci至cj的写入锁定消息,该联锁控制器接收这些消息并且例如通过将条目添加到锁定列表来建立读取锁定和写入锁定。在框1212处,控制处理器1140可将存储指令调度给流水线1110,该存储指令在该流水线中进入向量存储引擎1124的调度队列。调度队列接口向联锁控制器330发送关于输入虚拟地址范围ci至cj的读取锁定消息,该联锁控制器接收这些消息并且例如通过将条目添加到锁定列表来建立读取锁定。在框1214处,控制处理器1140可执行指令以确定整个数据块是否已被编码并且确定是返回到框1206还是在框1220处继续其他处理。
95.现在将描述在过程1200期间流水线1110中的流控制。在框1202处调度加载指令之后的某个时间点,该加载指令到达向量加载引擎1121的调度队列的前部。如上文参考过程700(图7)所述,当加载指令到达调度队列的前部时,向量加载引擎1121可使用输出虚拟地址范围a0至an来开始轮询联锁控制器1130,以确定是否可执行该加载指令。联锁控制器
1130检查数据依赖性(其可存在于仍在被执行的先前所接收到的指令中)(例如,如上文参考过程1000所述),并返回授权响应或拒绝响应。向量加载引擎1121继续轮询联锁控制器1130,直到接收到授权响应,此时向量加载引擎1121可开始将数据加载到缓冲器1112中映射到虚拟地址范围a0至an的物理位置中。一旦加载完成,向量加载引擎1121就可将消息发送到联锁控制器1130以清除针对地址范围a0至an的写入锁定。
96.在框1208处调度编码指令之后的某个时间点,该指令到达编码器引擎1122的调度队列的前部。该事件可在向量加载引擎1121已完成(或甚至已开始)执行加载指令之前或之后发生。无论定时如何,编码器引擎1122可使用输入虚拟地址范围ai至aj(其为范围a0至an的子集)来开始轮询联锁控制器1130。如果向量加载引擎1121尚未清除写入锁定,则联锁控制器1130将拒绝响应返回到编码器引擎1122,该编码器引擎将继续轮询(不执行指令),直到向量加载引擎1121清除写入锁定。此时,联锁控制器1130可返回对来自编码器引擎1122的下一个轮询请求的授权响应,并且编码器引擎1122可开始对与虚拟地址ai至aj对应的物理缓冲器位置中的数据进行操作。在流水线1110中每个指令和每个处理引擎获得类似的行为。
97.还应当理解,流水线1100可作为多线程流水线进行操作。例如,过程1200的下一次迭代可对不同的数据块进行操作并且可能具有不同的参数(例如,由于信道条件改变);因此,过程1200的每次迭代可被处理为线程。用于新线程的指令可进入流水线1110并在流水线1110完成执行用于前一个线程的指令之前开始执行。例如,可在下游处理引擎仍在线程1上进行操作时发出并执行用于线程2的加载指令,并且编码器可开始对线程2的数据进行编码,同时线程1的交织和速率匹配仍在进行中。只要线程使用不同的缓冲器位置来存储数据,它们就不必彼此干扰。
98.如该示例所示,通过跟踪来自流水线中的处理引擎的读取锁定请求和写入锁定请求,并且通过基于较早的读取锁定和/或写入锁定的存在或不存在来授权或拒绝来自处理引擎的轮询请求,联锁控制器1130可防止下游处理引擎对尚未准备好被操作的数据进行操作,同时允许一旦处理引擎和输入数据两者都准备好,处理引擎就进行操作。在对于以下内容保持不可知时:流水线1110中存在多少个处理引擎、正在执行什么操作或给定操作可能花费的时间,联锁控制器1130可实现这一点。
99.还应当指出的是,控制处理器1140可能不可知联锁控制器1130的操作。例如,由控制处理器1140执行的程序代码不需要包括关于读取锁定、写入锁定或轮询的任何指令;只要适当地指定输入地址和输出地址,流水线中的硬件就自动产生期望的行为。控制处理器1140还可将指令循序地调度给流水线1140,而无需确定指令是否准备好用于执行。如果流水线1140中的一个或多个调度队列填满容量,则背压可用于通过控制处理器1140来暂停指令调度。控制处理器1140还可能不可知执行指令的各种功能单元如何被分配给处理引擎。例如,流水线1110可包括路由逻辑,该路由逻辑将来自控制处理器1140的每个指令路由到可执行指令的特定处理引擎的调度队列。
100.因此,可将相同的数据同步电路应用于任何处理流水线。以举例的方式,图13示出了根据一些实施方案的不同数据处理流水线—解码流水线1310的简化框图。解码流水线1310可以是上述流水线310的另一个实例。在该示例中,假设解码流水线1310对经由4g无线电接入网络的pdsch信道接收到的数据进行操作。向量加载引擎1321和向量存储引擎1324
可与上述向量加载引擎321和向量存储引擎324类似或相同。向量加载引擎1321可将从l1存储器读取的数据写入解交织缓冲器1316中。处理引擎1322可实施解交织和速率恢复。例如,处理引擎1322可通过从解交织缓冲器1316读取数据来实施解交织;如果逐行写入数据,则处理引擎1322可逐列读取数据。速率恢复可通过识别数据的重复部分并合并与相同数据位对应的对数似然比来实施。处理引擎1323可实施用于pdsch的解码器算法。例如,处理引擎1323可包括实施用于4g pdsch信道的turbo解码器的功能单元。流水线1310还可包括处理引擎1322-1324可访问的共享缓冲器1314。控制处理器1340和联锁控制器1330可与控制处理器340和联锁控制器330类似或相同。
101.与流水线1110一样,流水线1310的操作可使用由控制处理器1340执行的程序代码(例如,固件)来限定。特定功能和序列是不同的,因为解码过程在某种意义上是编码过程的反转。流水线1310中的功能单元完成操作的时间量可不同于流水线1110中的对应功能单元完成操作的时间量。例如,对于给定代码块大小,解码的时间可能比编码的时间更长。然而,数据同步或流控制可以完全相同的方式处理。控制处理器1340可按顺序向流水线1310发出指令,并且每个指令可进入处理引擎1321-1324中的适当处理引擎的调度队列。指令可指定流水线1310的虚拟地址空间中的虚拟地址,这些虚拟地址涵盖缓冲器1314和1316中的位置。如上文参考图6和图7所述,在调度队列接口中接收指令可触发向联锁控制器1330发送读取锁定请求和/或写入锁定请求,并且完成指令(或读取操作或写入操作)可触发向联锁控制器1330发送清除请求。同样如上所述,在读取或写入之前,每个处理引擎可利用要读取或写入的虚拟地址来轮询联锁控制器,并且可在接收到来自联锁控制器1330的授权响应时进行。联锁控制器1330可实施上述相同逻辑来响应读取锁定请求、写入锁定请求、清除请求和轮询请求。因此,流水线内的数据同步可能不可知流水线内的特定处理活动。
102.应当理解,包括实施不同功能的流水线的多个流水线可在同一蜂窝调制解调器处理器中共存。每个流水线可具有其自己的处理引擎、其自己的缓冲器、其自己的联锁控制器和虚拟寄存器文件,以及其自己的虚拟地址空间。例如,控制处理器可将指令调度给一个流水线以进行针对接收到的4g发射块的ofdm解映射,然后将指令调度给流水线1310以解码发射块。另选地,流水线中的一些或全部可具有其自己的专用控制处理器(其可允许更多流水线并行操作)。就处理引擎内的子流水线而言,子流水线内的指令执行可由硬件驱动(例如,子流水线中的一个功能单元在适当时间触发下一个指令执行)。另选地,如果需要,可在处理引擎内实施可编程子流水线控制处理器,以在该子流水线中执行固件限定的指令序列。在每个流水线中,可使用如本文所述的基于固件的控制(例如,经由控制处理器340、1140、1340)和基于硬件的依赖性管理(例如,经由联锁控制器330、1130、1330)的组合来提供数据同步。
103.接触本公开的本领域技术人员将理解,使用如本文所述的基于固件的控制和基于硬件的依赖性管理的组合的流水线数据同步可提供优于用于流控制或数据同步的其他方法的各种优点。
104.例如,为了实施纯基于硬件的流控制,系统设计者将每个处理引擎建模为状态机,并且可能的状态序列取决于可对相同数据块进行连续操作的可能的成对处理引擎(或功能单元)和每个操作可能花费的时间。在具有若干处理引擎的流水线中,每个处理引擎具有若干种可能状态,状态的组合的数量可能变大,使得难以在所有可能的条件下验证流水线的
正确操作。对于基于固件的流控制,可简化硬件状态机,但是固件开发者需要考虑可能的状态和状态的序列,并将异常和事件处理结合到程序代码中。
105.相比之下,在本文所述的各种实施方案中,每个处理引擎根据简单的状态机进行操作:如果满足下一个指令的所有数据依赖性,则进行操作;如果不满足,则等待。相同状态机适用于流水线中的每个处理引擎(或功能单元)。状态机的简化可简化硬件的验证。同样,固件开发者不必设法解决复杂状态机;固件开发者可简单地写入表达预期数据流的程序代码。例如,为了使处理引擎323对从处理引擎322输出的数据进行操作,开发者可对可由处理引擎322执行的写入给定地址的指令进行编码,然后对可由处理引擎323执行的从该地址读取的指令进行编码。开发者可几乎直观地写入此类代码,而无需知道硬件的详细信息(包括哪些处理引擎执行哪些指令)。
106.一些实施方案还可提供灵活性的优点。例如,使基于硬件的流控制适应处理算法的改变可能是困难的并且通常需要新的电路。相比之下,在本文所述的实施方案中,可简单地通过更新固件来实施对算法的至少一些改变。例如,如果将新代码块大小添加到现有编码器方案,则可更新固件来提供新代码块大小的参数。新代码块大小可改变处理引擎完成编码(或解码)所需的时间量;然而,在下游处理引擎(或功能单元)等待直到上游处理引擎(或功能单元)已完成编码(或解码)的情况下,仍然可应用相同的简单状态机。
107.另外,本文所述的一些实施方案提供统一(或通用)数据同步架构。联锁控制器设计和操作不是特定于任何特定处理引擎或功能单元的,或者不是特定于处理引擎和功能单元的任何特定组合的。联锁控制器可能不可知如何将虚拟地址空间映射到物理存储器(例如,如上所述的缓冲器);相反,虚拟地址简单地用作数据依赖性的指示标识。此外,联锁控制器中的决策逻辑可独立于任何处理引擎(例如,哪些功能单元在特定处理引擎中)或流水线的任何特定功能而进行操作。数据依赖性是基于指令调度的顺序和指令中含有的输入地址信息和输出地址信息来限定的,并且用于确定数据依赖性是否已满足的相同决策逻辑可在不考虑数据的量、对数据执行的特定操作或在物理上存储数据的位置情况下应用。因此,不需要单独为每个流水线设计联锁控制器。在一些实施方案中,可针对处理器中每个流水线的每个实例部署相同联锁控制器电路的实例,其中联锁控制器实例之间的唯一差异在于联锁控制器接收请求的流水线阶段的数量。这可以大大简化具有多个不同流水线的处理器(诸如,蜂窝调制解调器处理器)中的流控制的具体实施。
108.虽然已对具体实施方案进行了描述,但本领域的技术人员将会理解,变型和修改是可能的。例如,蜂窝调制解调器处理器可包括任何数量的流水线和流水线的任何组合,并且可支持任何数量的无线电接入网络,包括4g和/或5g。每个流水线可具有其自己的控制处理器,或者根据需要,一个控制处理器可被配置为将指令调度给多个流水线。流水线可包括任何数量的处理引擎,并且可根据需要修改特定操作(或功能单元)向处理引擎的分配。处理引擎或功能单元可以是对多个输入并行执行相同操作的向量引擎。流水线阶段之间的缓冲器可使用任何类型的存储器电路来实施,并且可包括专用缓冲器(其中仅一个处理引擎写入并且仅一个处理引擎读取)和共享缓冲器(其中多个处理引擎可读取和/或写入)的任何组合。联锁控制器可使用各种技术来跟踪数据依赖性。由联锁控制器使用的虚拟地址空间可使用各种寻址方案,前提条件是不同的虚拟地址映射到不同的物理缓冲器(或其他存储器)位置,并且可以任何期望的粒度水平(例如,字词、行、缓冲器等)来限定虚拟地址。调
度给流水线的指令可直接(例如,输入虚拟地址和输出虚拟地址可以是调度的指令的操作数)或间接(例如,调度的指令的操作数可包括处理引擎中的调度队列接口可将其映射到由联锁控制器使用的虚拟地址空间的任何地址空间中的地址)指定用于联锁控制器的虚拟地址。在固件中实施的过程和本文所提供的特定固件指令的示例也是例示性的。在名称用于特定功能单元或指令的情况下,此类名称是便于描述的,并且不旨在限定或暗示任何特定的isa。
109.本文所述的所有过程是例示性的并且可被修改。操作可在逻辑允许的范围内按与所述的顺序不同的顺序执行;可省略或组合上述操作;并且可添加上文未明确描述的操作。
110.除非明确指示,否则附图在本质上是示意性的并且未按比例绘制。本文所呈现的所有数值都是例示性的而非限制性的。对用于蜂窝数据通信(例如,4g lte或5g nr)的特定标准的参考也是出于例示的目的;接触本公开的本领域技术人员将能够调整本文所述的设备和方法以与其他标准相容。
111.本公开包括对“实施方案”或“实施方案”的组(例如,“一些实施方案”或“各种实施方案”)的引用。实施方案是所公开概念的不同具体实施或实例。提及“实施方案”、“一个实施方案”、“特定实施方案”等并不一定是指相同的实施方案。设想了大量可能的实施方案,包括具体公开的那些,以及落入本公开的实质或范围内的修改或替代。
112.本公开可讨论可由所公开的实施方案产生的潜在优点。并非所有这些实施方案的具体实施都将必然表现出任何或所有潜在优点。特定具体实施是否实现了优点取决于许多因素,其中一些因素在本公开的范围之外。事实上,存在许多原因导致落入权利要求范围内的具体实施可能不表现出任何所公开的优点中的一些或全部。例如,特定具体实施可包括在本公开的范围之外的其他电路,结合所公开的实施方案中的一个实施方案,该其他电路否定或减弱一个或多个所公开的优点。此外,特定具体实施(例如,具体实施技术或工具)的次优设计执行也可能否定或减弱所公开的优点。即使假设有技术的具体实施,优点的实现仍可取决于其他因素,诸如部署具体实施的环境情况。例如,提供给特定具体实施的输入可防止本公开中解决的一个或多个问题在特定场合发生,结果可能无法实现其解决方案的益处。考虑到本公开外部的可能因素的存在,本文所述的任何潜在优点都不应理解为是为了证明侵权行为而必须满足的权利要求限制。相反,此类潜在优点的识别旨在示出受益于本公开的设计者可用的一种或多种改进类型。永久性地描述此类优点(例如,陈述特定优点“可出现”或“可能出现”)并非旨在传达关于此类优点实际上是否可被实现的疑问,而是认识到此类优点的实现通常取决于附加因素的技术现实。
113.除非另行指出,否则实施方案是非限制性的。也就是说,所公开的实施方案并非旨在限制基于本公开起草的权利要求的范围,即使仅针对特定特征描述单个示例的情况下也是如此。本发明所公开的实施方案旨在为示例性的而非限制性的,而无需在本发明中进行任何相反的陈述。因此本技术意在允许涵盖所公开实施方案的权利要求、以及此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
114.例如,本技术中的特征可以任何合适的方式组合。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地讲,参照所附权利要求,从属权利要求的特征在适当的情况下可与其他从属权利要求的特征组合,包括从属于其他独立权利要求的权利要求。类似地,在适当的情况下,可组合来自
相应独立权利要求的特征。
115.因此,虽然所附从属权利要求可撰写成使得每个从属权利要求从属于单个其他权利要求,但也可设想附加从属关系。可设想符合本公开的从属权利要求的任何组合,并且这些组合可在本专利申请或另一专利申请中受权利要求书保护。简而言之,组合不限于所附权利要求中具体列举的那些。
116.在适当的情况下,还预期以一种格式或法定类型(例如,装置)起草的权利要求旨在支持另一种格式或法定类型(例如,方法)的对应权利要求。
117.***
118.因为本公开是法律文件,所以各种术语和短语可受到管理和司法解释的约束。特此给出公告,以下段落以及贯穿本公开提供的定义将用于确定如何解释基于本公开起草的权利要求。
119.除非上下文另有明确规定,否则对单数形式的项目的引用(即,前面有“一个”、“一种”或“该”的名词或名词短语)旨在表示“一个或多个”。因此,在不伴随上下文的情况下,对权利要求中的“项目”的引用并不排除该项目的附加实例。“多个”项目是指两个或更多个项目的集合。
120.词语“可”在本文中在允许的意义上(即,具有潜在可能的,能够的)进行使用,而不是在强制意义上(即,必须)进行使用。词语“可以”在本文中在相同的允许意义上(即,具有潜在可能的,能够的)进行使用。
121.术语“包含”和“包括”及其形式是开放式的,并且意指“包括但不限于”。
122.当在本公开中相对于选项列表使用术语“或”时,除非上下文另有提供,否则一般将理解为以包含性意义使用。因此,表述“x或y”等同于“x或y,或两者”,因此涵盖1)x但不是y,2)y但不是x,以及3)x和y两者。另一方面,短语诸如“x或y中的任一者,但不是两者都”使得清楚“或”以排他性意义使用。
123.表述“w、x、y或z,或它们的任何组合”或
“…
w、x、y和z中的至少一者”旨在涵盖涉及最多至该集合中元件总数的单个元件的所有可能性。例如,给定集合{w,x,y,z},这些短语涵盖集合中的任何单个元素(例如,w但不是x、y或z)、任何两个元素(例如,w和x,但不是y或z)、任何三个元素(例如,w、x和y,但不是z)以及所有四个元素。短语
“…
w、x、y和z中的至少一者”因此是指集合{w,x,y,z}中的至少一个元素,从而涵盖该元素列表中的所有可能的组合。该短语不应被解释为要求存在w的至少一个实例、x的至少一个实例、y的至少一个实例和z的至少一个实例。
124.在本公开中,各种“标签”可先于名词或名词短语。除非上下文另有提供,否则用于特征(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)的不同标签是指特征的不同实例。除此之外,除非另有说明,否则标签“第一”、“第二”和“第三”在应用于特征时并不暗示任何类型的排序(例如,空间、时间、逻辑等)。
125.短语“基于”用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于b确定a”。此短语指定b是用于确定a的因素或者b影响a的确定。此短语并不排除a的确定也可基于某个其他因素诸如c。此短语也旨在覆盖a仅基于b来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
126.短语“响应于”和“响应”描述了触发效应的一个或多个因素。该短语不排除附加因素可影响或以其他方式触发效应的可能性,这些因素与指定因素联合使用或独立于指定因素。也就是说,效果可以仅仅响应于这些因素,或者可以响应于指定的因素以及其他未指定的因素。考虑短语“响应于b执行a”。该短语指定b是触发a的执行或触发a的特定结果的因素。该短语不排除执行a也可能响应于某些其他因素,诸如c。该短语也不排除执行a可响应于b和c而联合执行。此短语也旨在覆盖a仅响应于b而执行的实施方案。如本文所用,短语“响应”与短语“至少部分地响应于”是同义的。类似地,短语“响应于”与短语“至少部分地响应于”是同义的。
127.***
128.在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表述
‑‑
被配置为【执行一个或多个任务】的【实体】
‑‑
在本文中用于指代结构(即,物理的东西)。更具体地说,该表述用于指示该结构被布置为在操作期间执行一个或多个任务。结构可以说成是“被配置为”执行某些任务,即使该结构当前没有被操作。因此,被描述或叙述为“被配置为”执行某些任务的实体指的是物理的东西,诸如设备、电路、具有处理器单元和存储可执行以实现该任务的程序指令的存储器的系统等。该短语在本文中不用于指无形的东西。
129.在一些情况下,各种单元/电路/部件在本文中可被描述为执行一组任务或操作。应当理解,这些实体“被配置为”执行那些任务/操作,即使没有具体指出。
130.术语“被配置为”并不旨在意指“可配置为”。例如,未编程的fpga不会被认为是“被配置为”执行特定功能。然而,该未编程的fpga可以“可配置为”执行该功能。在适当编程之后,fpga然后可认为“被配置为”执行特定功能。
131.出于基于本公开的美国专利申请的目的,在权利要求中陈述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素不援引35u.s.c.
§
112(f)。如果申请人在基于本公开的美国专利申请的申请过程中想要援引112(f)部分,则该申请人将使用“用于【执行某功能】的装置”结构体来详述权利要求要素。
132.可在本公开中描述不同的“电路”。这些电路或“电路系统”构成硬件,该硬件包括各种类型的电路元件,诸如组合逻辑、时钟存储设备(例如,触发器、寄存器、锁存器等)、有限状态机、存储器(例如,随机存取存储器、嵌入式动态随机存取存储器)、可编程逻辑阵列等。电路可为定制设计的,或取自标准库。在各种具体实施中,电路可视情况包括数字部件、模拟部件或两者的组合。某些类型的电路可通常被称为“单元”(例如,解码单元、算术逻辑单元(alu)、功能单元、存储器管理单元(mmu)等)。此类单元也指电路或电路。
133.因此,在附图中示出并在本文中描述的所公开的电路/单元/部件和其他元件包括硬件元件,诸如前面段落中描述的那些硬件元件。在许多情况下,硬件元件在特定电路中的内部布置可通过描述该电路的功能来指定。例如,特定的“解码单元”可被描述为执行“处理指令的操作码并将该指令路由到多个功能单元中的一个或多个”的功能,这意味着解码单元“被配置为”执行该功能。对于计算机领域的技术人员而言,该功能规范足以暗示用于电路的一组可能的结构。
134.在各种实施方案中,如前面段落中所述,电路、单元和其他元件可由其被配置为实施的功能或操作来限定。相对于彼此的布置和此类电路/单元/部件以及它们进行交互的方
式形成硬件的微架构定义,该硬件最终在集成电路中制造或被编程到fpga中以形成微架构定义的物理具体实施。因此,微架构定义被本领域的技术人员认为是可导出许多物理具体实施的结构,所有这些物理具体实施均落入由微架构定义所描述的更广泛的结构中。即,具有根据本公开提供的微架构定义的技术人员可在没有过度实验的情况下并且利用普通技术人员的应用,通过以硬件描述语言(hdl)诸如verilog或vhdl编码电路/单元/部件的描述来实现该结构。hdl描述常常以可显现为功能性的方式来表达。但是对于本领域的技术人员而言,该hdl描述是用于将电路、单元或部件的结构转换为下一级具体实施细节的方式。此类hdl描述可采用以下形式:行为代码(其通常为不可合成的)、寄存器传输语言(rtl)代码(其与行为代码相比通常为可合成的)、或结构代码(例如,指定逻辑门及其连接性的网表)。可针对为给定集成电路制造技术设计的单元库来顺序地合成hdl描述,并可出于定时、功率和其他原因而被修改,以获得被传输到工厂以生成掩模并最终产生集成电路的最终的设计数据库。一些硬件电路或其部分也可在示意图编辑器中被定制设计并与合成电路一起被捕获到集成电路设计中。该集成电路可包括晶体管和其他电路元件(例如,无源元件,诸如电容器、电阻器、电感器等),以及晶体管和电路元件之间的互连件。一些实施方案可实现耦接在一起的多个集成电路,以实现硬件电路,和/或可在一些实施方案中使用离散元件。另选地,hdl设计可被合成为可编程逻辑阵列诸如现场可编程门阵列(fpga)并且可在fpga中实现。一组电路的设计与这些电路的后续低级具体实施之间的这种解耦通常导致这样的情形:其中电路或逻辑设计者从来不指定超出对电路被配置为做什么的描述的用于低级具体实施的一组特定结构,因为该过程是在电路实施过程的不同阶段执行的。
135.可使用电路元件的许多不同低级组合来实现电路的相同规格的事实导致该电路的大量等效结构。如所指出的那样,这些低级电路具体实施可根据制造技术、被选择用于制造集成电路的铸造厂、为特定项目提供的单元库等的变化而变化。在许多情况下,通过不同设计工具或方法进行的产生这些不同具体实施的选择可以是任意的。
136.此外,对于给定实施方案,电路的特定功能规范的单个具体实施通常包括大量设备(例如,数百万个晶体管)。因此,该信息的剪切体积使得提供用于实现单个实施方案的低级结构的完整叙述是不切实际的,更不用说大量等同的可能具体实施。为此,本公开描述了使用工业中常用的功能简写的电路的结构。
137.各种实施方案可使用计算机程序代码来实施各种特征。任何此类程序代码可被编码并存储在各种计算机可读存储介质上;合适的介质包括磁盘或磁带、光学存储介质诸如光盘(cd)或dvd(数字通用光盘)、闪存存储器,以及其他非暂态介质。(应当理解,数据的“存储”不同于使用暂态介质诸如载波的数据的传播。)利用程序代码编码的计算机可读介质可包括兼容电子设备的内部存储介质和/或可由可执行该代码的电子设备读取的外部存储介质,该兼容电子设备可以是具有读取和执行程序代码的能力的任何电子设备。在一些情况下,可经由互联网下载或其他发射路径向电子设备供应程序代码。
138.一旦充分了解了上面的公开,许多变型和修改对于本领域的技术人员而言将变得显而易见。本公开旨在使以下权利要求书被阐释为包含所有此类变型和修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1