具有对应于各个数据流的直接存储器存取引擎的高斯混合模型加速器的制作方法

文档序号:13451356阅读:601来源:国知局
具有对应于各个数据流的直接存储器存取引擎的高斯混合模型加速器的制作方法



背景技术:

gmm(gaussianmixturemodel,高斯混合模型)评分操作通常涉及繁重的计算,所述计算可能使用具有拙劣的引用局域性的大型数据结构。因此,典型地需要存储器组织和打包以控制应用程序的存储器占用量。当在标准计算引擎上执行时,对数据和复用模式的存储器管理可能限制其操作的效率。

例如,当基于软件(sw)的解决方案处理此算法(例如,gmm(高斯混合模型)评分操作)时,它们可能依赖于高速缓存的统计行为和高速缓存预取行为来处理数据局域性。由于应用程序的许多部分的高串流性质(例如,在复用之前10-100mb的数据被读取),这可能导致高速缓存的抖动。

此外,根据数据类型,典型地将数据组织为字节、字或双字。典型地需要多个scathe/gather指令来对存储器解包并将其设定用于计算阶段。例如,当使用活动列表(其可以是稀疏的)来处理仅一部分的输出时,数据可能被严重地分散。

在一些实现方式中,可以将gmm(高斯混合模型)评分操作应用于语音和其他声学信号的自动化电子处理。部分地由于各个说话者的广泛多种发音、口音和语音特性,语音和其他声学信号的自动化电子处理存在挑战。可以使用诸如语言模型和声学模型的约束来对用户说出的字作出决策,但是声学模型通常是数学上密集的。

例如,大多数大词汇量连续语音识别系统使用连续密度隐马尔可夫模型(hmm)来对语音进行声学建模。hmm可以包括若干活动状态,并且每种活动状态输出可以利用高斯混合模型(gmm)概率密度函数来进行建模。hmm典型地用于对声音的子字单元或完整的字进行建模。在英语语言中,存在声音的近似四十个音素或单独单元,它们可以用来形成更复杂的话语。可以在上下文中考虑音素,并且在英语语言中存在高达64,000个三音素(即,三个音素的序列)。

孤立音素的模型可以被称为上下文独立(ci)音素模型。音素序列的模型可以被称为上下文相关(ci)音素模型。例如,在字“cat”中,可以利用ci音素模型对id声进行建模,并且可以利用cd音素模型对/c/声进行建模。可以使用gmm来表示ci音素模型(即,cigmm)和cd音素模型(即,cdgmm)的状态输出概率密度函数。

在常规语音识别系统中,为音频信号的每个帧计算与音素和三音素相关联的gmm得分并存储该得分。这需要大量的处理和存储器使用。为了进行实时处理,必须连续地加载所有gmm参数(例如,均值、方差、混合权重),从而导致较高的存储器带宽要求。在便携式设备中,较高的计算使用和存储器带宽可能导致对最终用户的响应时间较慢以及电池寿命缩短。

附图说明

在附图中通过举例而非限制的方式展示了在此所描述的材料。为了展示的简单和清晰起见,在附图中所展示的元件不一定按比例绘制。例如,为清晰起见,某些元件的尺寸相对于其他元件可能被夸大。此外,在认为适当的情况下,参考标记在附图之间重复以指示相应的或相似的元件。在附图中:

图1是示例gmm(高斯混合模型)系统的原理图;

图2是示例gmm(高斯混合模型)方案的操作的原理图;

图3是展示示例评分过程的流程图;

图4是展示示例评分过程的流程图;

图5是展示示例评分过程的流程图;

图6是示例系统的原理图;并且

图7是全部根据本披露的至少一些实现方式安排的示例系统的原理图。

具体实施方式

虽然以下描述阐述可以在例如片上系统(soc)架构的架构中体现的各种实现方式,但是在此描述的技术和/或安排的实现方式并不限于具体的架构和/或计算系统并且可以由用于类似目的的任何架构和/或计算系统实现。例如,采用例如多个集成电路(ic)芯片和/或封装体、和/或各种计算设备和/或消费电子(ce)设备(诸如机顶盒、智能电话等)的各种架构可以实现在此描述的技术和/或安排。此外,虽然以下描述可以阐述许多特定的细节(诸如逻辑实现、系统部件的类型和内在关系、逻辑划分/集成选择等),但是所要求保护的主题可以在没有此类特定细节的情况下实践。在其他示例中,一些材料(例如,控制结构和完整的软件指令序列)可能未详细示出,以便不模糊在此披露的材料。

在此披露的材料可以在硬件、固件、软件或它们的任何组合中实现。在此披露的材料还可以被实现为存储在机器可读介质上的指令,所述指令可以由一个或多个处理器读取和执行。机器可读介质可以包括用于存储或传输呈由机器(例如,计算设备)可读的形式的信息的任何介质和/或机制。例如,机器可读介质可以包括:只读存储器(rom);随机存取存储器(ram);磁盘存储介质;光学存储介质;闪存存储器设备;电气、光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)以及其他介质。

本说明书中提到“一种实现方式(oneimplementation)”、“一个实现方式(animplementation)”、“示例实现方式(anexampleimplementation)”等表明所描述的实现方式可以包括具体特征、结构或特性,但是每个实现方式可以不必包括所述具体特征、结构或特性。此外,此类短语不必指代同一实现方式。此外,当结合一个实现方式来描述具体特征、结构或特性时,应当理解,结合无论在此是否明确描述的其他实现方式来实施此类特征、结构或特性在本领域技术人员的认知范围内。

以下描述了系统、设备、制品和方法,包括用于经由gmm(高斯混合模型)加速器的与各个数据流对应的直接存储器存取引擎来进行存储器存取的操作。

如以上所讨论,gmm(高斯混合模型)评分操作常常涉及繁重的计算,所述计算可能使用具有拙劣的引用局域性的大型数据结构。因此,典型地需要存储器组织和打包以控制应用程序的存储器占用量。当在标准计算引擎上执行时,对数据和重用模式的存储器管理可能限制其操作的效率。

例如,当基于软件(sw)的解决方案处理此算法(例如,gmm(高斯混合模型)评分操作)时,它们可能依赖于高速缓存的统计行为和高速缓存预取行为来处理数据局域性。由于应用程序的许多部分的高串流性质(例如,10-100mb的数据在复用之前被读取),这可能导致数据高速缓存的抖动。

此外,根据数据类型,典型地常将数据组织为字节、字或双字。典型地需要多个scathe/gather指令来对存储器进行解包并将其设定用于计算阶段。例如,当活动列表指示可能需要处理的数据分散位置稀疏时,数据可能被严重地分散。活动列表可以自动地操作为用于存储器中可能需要处理的分散位置的指示符/索引。

如以下将更详细地讨论的,如在此披露的gmm评分加速器(gmmsa)利用适当的串流和缓冲方案来解决这些存储器管理问题。

例如,如在此披露的gmm评分加速器(gmmsa)典型地可以包括一个数学处理元件和一组数据馈送引擎,所述一组数据馈送引擎一方面使用最小缓冲并且另一方面使用有效的多流流水线来保证有效的数据串流。数据的一些部分(例如,var、mean、const以及在一些情况下的活动列表)可以以一定的速率设置(例如,根据数据消耗速率的速率设置)进行串流。数据的某一部分(在此被称为“特征向量”)可以在操作期间被复用、在开始的时候被读取并且然后从模块内的缓冲器被复用。当结果就绪时,可将它们串流到存储器。可以使用预取机制来尝试保证数据及时可用,其中此类数据流动控制保证可以减少所需的缓冲量并且对性能的影响最小。此外,如在此披露的硬件(hw)gmm评分加速器(gmmsa)可以被适配成能够以显著更低的功率(-3mw对-300mw)和循环计数(1个时钟/高斯对17-65个时钟/高斯)来操作。一个实验性示例已导致1个时钟的高达48mac操作;在这种示例中,以计算引擎所允许的最大速率来执行的能力可以取决于高斯的大小或其他项目(诸如数据复用模式)。

图1是根据本披露的至少一些实现方式安排的示例gmm(高斯混合模型)系统的原理图。在各种实现方式中,可将gmm系统实现为gmm加速器100。这种gmm加速器100可以是被设计用于在pcie类环境中作为设备操作的模块。图1是这种模块的一种这样的实现方式的框图。

如以下将更详细描述的,gmm加速器100可以包括若干部件,所述部件包括:各个dma(直接存储器存取)引擎104、gmm执行核106、mmu(存储器管理单元)108、gmm数据路径逻辑110、gmm读/写存储器复合体112、中断产生逻辑114等等,和/或它们的组合。此外,gmm加速器100可以包括为清晰起见图1中未示出的另外的项目。虽然此处展示的gmm加速器100被示出为集成产品,但是将了解,在本披露的至少一些实现方式中,也可利用非集成式实现方式。

如在此所使用的,术语评分(例如,如可经由执行核106来完成)可以指代高斯混合模型(gmm)型操作或其他操作(诸如在gmm中计算神经网络的输出)。因此,将理解,虽然许多部件在此被描述为“gmm”型单元,但是这些单元同样可以被类似地描述为配置用于关于另一类型的评分操作(诸如仿射神经网络、对角矩阵乘法、递归神经网络、复制操作等等,和/或它们的组合)进行操作。

pciei/f可以是对用于配置模型寄存器的模块的主要控制。例如,可以使用两组寄存器:pci配置寄存器120(例如,其中可以具有对模块进行功率管理的能力)以及可以用于所有运行时配置和控制的mmio寄存器122。这些寄存器120和/或122可以在空闲时保存模块的大部分状态,这可以允许在不活动时对模块的其他零件断电。

可以使用主功率域124(被指出为vnn)来构建模块,当模块可存取时,所述主功率域可以始终是导通的。此域124可以包括总线接口区段、保存用于操作的配置和设置的寄存器以及控制这些所需的逻辑。当不执行评分操作时,可以关断(gatedoff)所有其他逻辑,因为它不可以保存激活之间的状态。在一些情况下(例如,出于除错的目的)可能的是,其他逻辑将保存状态;在这种情况下,其他域可以保持通电以保留所述信息并允许对其齐进行存取。其他方法(诸如保持触发器)也可以用于这个目的。

在评分操作期间,gmm加速器100可以从存储器102读取数据的一小部分(被称为“特征向量”)并且将其存储以用于整个操作(例如,可读取并存储多个特征向量以允许稍后讨论的‘分组’)。所有其他数据都可以被串流到gmm加速器100,用于计算并被丢弃。所有所需的流可以基于它们的消耗速率并行地读取。此并行读取可以最小化每个流所需的缓冲量,因为其读取速率是由执行单元消耗所述流的速率控制的。在用于一个流的数据由于在存取存储器时的意外延迟而晚到的情况下,一旦达到适当的缓冲水平,对其他流的预取就将延迟。

已满的结果缓冲器一就绪,也就可以将数据写入到存储器102。可以基于分组的量来设定存储器中数据的组织以允许处理为单个数据流(例如,利用单个dma(直接存储器存取)引擎104)。

每个单独dma(直接存储器存取)引擎104可以获得‘用于读/写的当前序列’(例如,起始地址和长度)和从中将需要读/写的下一序列,可以在序列/块接近结束时使用所述读/写以使得能够在使用数据执行计算的单元之前进行数据读/写操作。换句话说,可以提前设置dma以允许在执行单元(例如,经由gmm执行核106的数据消耗)之前进行dma操作,因此数据将及时就绪。

gmm执行核106可以基于输入参数来计算所有读/写流的地址。每个单独dma(直接存储器存取)引擎104可以被设置成在设备线性地址空间中具有适当的相应存取流。

如在此所使用的,术语“线性地址空间”是指在连续的地址块中、地址被设定为一个大阵列的情况下所使用的存储器寻址方案(在现今的处理器中通常以程序将存储器视为它们可用的方式来使用此方案)。线性寻址典型地简化了对元素的编程和寻址。

分页方案是一种可以在现代计算机中映射物理存储器的方法,其中线性地址以被称为页的组映射到物理存储器。可以使用由一部分线性地址位编索引的页表来定义线性地址到物理地址的转换。在存储器中组织物理页的次序可以与线性映射不同。页表可以是一个层次的(单索引)或多层次的(使用分层索引)。

在这种示例中,可以使用mmu(存储器管理单元)108来转换单独dma(直接存储器存取)引擎104的线性地址以进行物理存取。可以为每个dma地址进行mmu地址转换。例如,mmu108可以基于dma引擎104的预读地址和在块即将结束时下一个块的地址进行预读。如在此所使用的,术语“预读地址”是指将作为未来dma设置的地址的地址。可以基于数据速率来设定mmu108预读的大小(例如,当速率较慢时为16b,或当数据速率较高时为64b)。这可以减少读取操作的数目(通过读取线性地址-物理地址转换块,所述转换与一个连续的线性地址序列有关),同时最佳化所需的局部存储量。除存储成本之外,过度预读可能在利用非连续区段进行操作时导致冗余读取。mmu108缓冲可以针对所串流的每个数据项目单独地进行管理,因为其数据使用的局域性可能与每个流相关联并且其他流对这些转换的使用率较低或不使用这些转换(因为它们使用其他线性地址)。

gmm数据路径逻辑110被配置用于将评分操作定义为使用并行逻辑实现的数学函数。在一个实现方式中,gmm数据路径逻辑110能够在每个循环中处理高达48个元素并且使用并行树来执行数据的积累。例如,请参考2012年12月31日提交的标题为“用于声学信号处理引擎的灵活架构(flexiblearchitectureforacousticsignalprocessingengine)”的美国专利申请号13/732,329,所述申请的内容通过引用整体明确地结合在此。

如以下将更详细地描述的,经由dma104,混合分量均值向量(例如,mean)、方差向量(例如,var)、高斯常数(例如,gconst)和/或特征向量可以被串流进入gmm数据路径逻辑110中并且gmm得分从所述gmm数据路径逻辑中被串流出来。

可以操作gmm读/写存储器复合体112,以允许gmm加速器100的硬件在gmm加速器100运行的任何时间来读/写数据。

在一些实现方式中,当gmm数据路径逻辑110停止执行时,可以经由中断产生逻辑114来产生中断。例如,可以执行gmm评分操作直到发生以下事件中的一者为止:1)gmm评分完成;在这种情况下,所有结果都被写入到存储器并且设定了完成状态;2)gmm遇到错误;在这种情况下,设定适当的错误位,所述错误位暗示检测到的错误的类型;3)由于到达在最后一次激活或恢复之前设定的断点,gmm操作被暂停;4)由于操作中的停顿,gmm操作被暂停;和/或5)指示出中止。这种中止操作可以重设gmm的内部状态,并且清除可以在其寄存器中的各种错误条件。当由于除中止之外的任何原因停止时,sw(软件)可以审核内部状态信息、状态位、性能计数器等。稍后使用中止操作来使gmm模块返回到就绪好重新激活的状态。当处于两种暂停状态中的一种时,sw可以选择使gmm评分操作从其被停止的点恢复。

图2是根据本披露的至少一些实现方式安排的、在操作中的示例gmm(高斯混合模型)gmm加速器100的操作的原理图。在各种实现方式中,gmm加速器100可以使用可经由私有页表202进行存取的大量数据(例如,gmm数据阵列201)。可以在触发评分操作之前配置系统存储器102中的此私有页表202。私有页表202中的存储器指派典型地是静态的,以允许锁定操作,即页表202(和相应的页目录206)被建构一次。例如,这种“锁定操作”可以指代作为os存储器管理的一部分、对os的页锁定,这可以防止页被换出。然而,所述“锁定操作”可以在gmm加速器100不执行gmm评分操作时根据需要发生改变。可替代地,如共享虚拟存储器(svm,例如https://software.intel.com/en-us/articles/opencl-20-shared-virtual-memory-overview)的技术可以允许在不锁定物理页的情况下完成映射操作,也可以将利用存取的空间局域性的类似结构扩展到所述环境。

如以上所讨论的,主要的一组元素可用于每种gmm状态并且包括以下阵列:混合分量均值向量(例如,mean)、方差向量(例如,var)、高斯常数(例如,gconst)和/或特征向量(例如,fv),经由dma104,以上各者可以被串流进入gmm数据路径逻辑110中并且gmm得分从所述gmm数据路径逻辑中被串流出来。例如,如在此披露的gmm加速器100典型地可以包括一个数学处理元件和一组数据馈送引擎,所述数据馈送引擎一方面使用最小缓冲并且另一方面使用有效的多流流水线来保证有效的数据串流。数据的一些部分(例如,var、mean、const以及在一些情况下的活动列表(act))可以以可变速率(例如,可以是可变的并且被自动调整到数据消耗速率的速率)进行串流。数据的某一部分(在此被称为“特征向量”)可以在操作期间被复用、在开始的时候被读取并且然后从模块内的缓冲器被复用。当结果就绪时,可将它们串流到存储器。

在能够开始评分之前,可以将页目录206加载到gmm加速器100hw(硬件)寄存器。在许多情况下,这种操作在分配存储器时被一次设定,但是它可以在gmm加速器100不执行评分操作时的任何时间发生改变。可以将页目录206实现为mmu108模块中的寄存器阵列。这种实现方式可以防止在未命中时需要从存储器提取第一层次的页表转换。可替代地,所述页目录可以实现为存储器中的阵列,使得mmu中的寄存器将地址保存到存储器并根据需要从存储器读取,或者它可以在存储器中并且在激活gmm评分操作时被读取到寄存器。

gmm寄存器(未示出)可以在模块激活之前被设定并且在执行gmm评分时不应当改变,这些gmm寄存器定义评分操作的数据元素大小、数据元素计数、数据位置和步幅。

可以执行gmm评分操作直到发生以下事件中的一者为止:1)gmm评分完成;在这种情况下,所有结果都被写入到存储器并且设定了完成状态;2)gmm遇到错误;在这种情况下,设定适当的错误位,所述错误位暗示检测到的错误的类型;3)由于到达在最后一次激活或恢复之前设定的断点,gmm操作被暂停;4)由于操作中的停顿,gmm操作被暂停;和/或5)指示出中止。这种中止操作可以重设gmm的内部状态,并且清除可以存在于其寄存器中的各种错误条件。当由于除中止之外的任何原因停止时,sw(软件)可以审核内部状态信息、状态位、性能计数器等。稍后使用中止操作来使gmm模块返回到就绪好重新激活的状态。当处于两种暂停状态中的一种时,sw可以选择使gmm评分操作从其被停止的点恢复。

如在先前章节中所讨论的,由gmm使用的大部分数据被存储在主系统存储器102中。gmm加速器100可以在评分执行期间读取数据,并且在向sw(软件)指示评分操作完成之前将结果写回到存储器系统存储器102中。

使用对存储器的dma104操作来执行这些读和写操作。dma104可以使用多个数据流(例如,其中各个流可以被指派给各个dma通道214)以减少需要存储在dma104模块内的数据量。另外或可替代地,dma104可以使用预取机制216(例如,mmu转换和预取逻辑216)来改进数据可用性并掩护存储器潜时。

在其操作期间,gmm加速器100可以使用dma104操作以便从主系统存储器102读写数据/将数据读写到所述主系统存储器。dma104驱动器和gmm两者可以引用同一个线性空间以用于数据寻址。dma104可以被配置成具有指向不同存储器结构的指示符,如稍后将讨论的。mmu108可以使用映射方案将这些地址转换为物理地址。

例如,可以将转换后备缓冲器(tlb)218用作高速缓存机制以减少对物理存储器进行寻址所需的存储器存取操作的数目。转换后备缓冲器(tlb)实现方式可以包括高速缓存方案,其中每个tlb条目包括指示与其相关联的物理地址的标签(可以使用多个层次的索引以减少重叠)。在gmm的情况下,通过使用线性地址块,tlb可以仅包括用于针对特定dma流所预取的一组连续地址的单个标签(并且因此仅需要搜索此单个标签)。这可以减少所需的存储量,并且同时也减少需要比较的标签的数目。

由于可以不监测在tlb218中转换的地址、在页目录206寄存器中的地址以及由gmm加速器100经由dma104操作所读取的任何数据的一致性,所以dma104驱动器的sw的责任可以是正确地管理计时和状态的适当刷新(flushing)以保证正确的操作。

尽管根据转换后备缓冲器(tlb)讨论了图2和在此讨论的其他示例,但是将了解,可以使用其他缓冲器方案来代替tlb。例如,在此讨论的实现方式可以操作以便使用多个转换的局域性行为来一次读取这些转换。在tlb环境中,稍后可以在使用多个转换的局域性行为来一次读取这些转换之后将tlbhw用作高速缓存。在这种示例中,所有tlb都可以被高速缓存,但是在此讨论的实现方式可以操作以便使用顺序存取来避免保存许多标签和执行复杂搜寻的需要。在tlb环境中,每个数据流1个tlb的概念可以与在此讨论的一些实现方式结合使用以产生此局域性,但这仅仅是示例。

如以上所讨论的,每个数据元素可以与特定dma通道214相关联。此外,每个特定dma通道214同样可以与特定tlb缓冲器218和一组条目相关联。可以将这种关联用于追踪下一个预期的数据元素的正确数据预取。

图3提供根据本披露的至少一些实现方式安排的、在经由gmm评分过程300的操作中的示例gmm加速器系统100(更多细节参见例如图1)的原理图。在所展示的实现方式中,过程300可以包括如由动作312等中的一个或多个展示的一个或多个操作、功能或动作。

如所展示的,gmm加速器系统100(更多细节参见例如图1)可以包括gmm执行核106、gmmdma(直接存储器存取)104、gmmmmu(存储器管理)108、主存储器102等等,和/或它们的组合。

如以上所讨论的,可以将转换后备缓冲器(tlb)322、324、326、328和/或330用作高速缓存机制以减少对物理存储器进行寻址所需的存储器存取操作的数目。

类似地,每个数据元素可以与特定dma通道312、314、316、318和/或320相关联。此外,每个特定dma通道312、314、316、318和/或320同样可以与特定tlb表322、324、326、328和/或330以及一组条目相关联。可以将这种关联用于追踪下一个预期的数据元素的正确数据预取。更重要的是,如所展示的,可以以这样一种方式针对所有流并行地完成数据读取:使得可以响应于逐个流地指示目标缓冲器中的空间的可用性来节制(throttle)数据读取。可以将数据读取的并行性质实现为越过普通存储器错误的时分多路传输。

如以上所讨论的,主要的一组元素可用于每种gmm状态并且包括以下阵列:混合分量均值向量(例如,mean)、方差向量(例如,var)、高斯常数(例如,gconst)和/或特征向量(例如,fv),经由dma104,以上各者可被串流进入并且gmm得分被串流出来。例如,如在此披露的gmm加速器100典型地可以包括一个数学处理元件和一组数据馈送引擎,所述数据馈送引擎一方面使用最小缓冲并且另一方面使用有效的多流流水线来保证有效的数据串流。数据的一些部分(例如,var、mean、const以及在一些情况下的活动列表(act))可以以一定的速率设置(例如,根据数据消耗速率的速率设置)进行串流。数据的某一部分(在此被称为“特征向量”)可以在操作期间被复用、在开始的时候被读取并且然后从模块内的缓冲器被复用。当结果就绪时,可将它们串流到存储器。

例如,一个可能的操作序列可以如下:

如所展示的,过程300可以在操作330处开始,在该操作处,软件可以启用并配置gmm评分操作设置(一次)(例如,如可以经由设置寄存器(此处未示出)完成的)。

在操作330之前,软件可以利用用于给定gmm评分操作的适当参数来配置gmmmmio寄存器,并且激活gmm评分操作。如以上所讨论的,此类评分操作可以涉及混合分量均值向量(例如,mean)、方差向量(例如,var)、高斯常数(例如,gconst)和/或特征向量,经由dma104,以上各者可以被串流进入并且gmm得分被串流出来。在这个示例中,可以从存储器读取参数(利用gmm描述符);可替代地,可以通过sw将参数写入到寄存器(如以上早期所描述的)。gmm硬件可以使用此数据以便将来自存储器的详细设置读取到模块内的寄存器。在一些情况下,当sw将数据直接写入到gmm模块寄存器时,可以跳过此读取操作。使用gmm评分操作的设置,gmm模块通过将dma引擎104设置到适当的读/写操作来开始dma操作序列。例如,可以至少部分地基于以下各者来设定dma104:特征向量大小、均值大小、方差向量大小、高斯常数大小、得分大小、活动列表大小等等,和/或它们的组合。某种dma操作设置还可以取决于其他dma操作的结果。例如,将作为所读取的act列表的一部分被返回的数据用作针对mean、var和const的基地址计算的一部分。

过程300可以在操作340处继续,在该操作处,gmm执行核106可以从一组gmm中选择一个gmm。例如,可以顺序地选择这种gmm,或者如此处所展示的,可以从非顺序型活动列表(act)中选择这种gmm。

如在此所使用的,术语“act”可以指代gmm活动列表,所述gmm活动列表可以提供对来自一组gmm中的将被执行的gmm的非顺序型排序,因为所述gmm活动列表指向这一组gmm。例如,当启用活动状态列表模式时,这种gmm活动列表可能正在使用中。此阵列在顺序模式期间可能不在使用中。活动列表(act)可以保存待评分的gmm状态索引的列表。

过程300可以在操作342处继续,在该操作处,为了开始活动列表读取操作,dma104使用活动列表的线性地址来触发读取。尝试将其转变为物理地址的请求被发送到mmu,因为mmu不具有所需的信息,所以它触发对页表的读取,所述页表返回活动列表的页地址(活动地址),mmu使用此信息将dma地址转换为物理地址,并且dma104可以执行从存储器的读取操作,所述存储器将返回活动列表数据(其为第一组活动元素的索引)。应当注意,返回数据典型地包括不止立即需要的东西,在这种情况下,剩余的数据被存储在活动列表缓冲器中并且用于稍后的操作步骤。然后,使用所读取的活动列表元素中的索引来计算另一dma的起点(图3中未示出)。

过程300可以在操作350处继续,在该操作处,响应于接收到与所选gmm相关联的gmm数据,gmm执行核106可以开始执行对所选gmm的评分。

在操作352处,硬件可以使用在并行地址请求中发布的多个读取请求来开始dma104操作,这些并行地址请求与各个dma通道314、316、318和/或320对应。

如以上所描述的,向量数据类型可以包括向量数据,所述向量数据包括:混合分量均值向量、方差向量、高斯常数向量、得分向量和/或特征向量等等,和/或它们的组合。如以下将更详细地讨论的,每种向量数据类型可以具有其自身的相应数据组织。

在此类示例中,每个可变数据顺序流可以存在一个mmu缓冲器,其中每个单独mmu缓冲器可以使用数据条目的线性地址的空间局域性以及所述相关联流的顺序行为来保存属于所述流(具有一种类型的可变数据)的一组数据元素。例如,线性地址的空间局域性和相关联“mean”流的顺序行为可以与另一个流(例如,线性地址的空间局域性以及相关联“var”流的顺序行为)不同。

如在此所使用的,术语“mean[s]”可以指代mean值。可将mean指示为m[m,n],其中m是每种状态下混合体的数目,并且n是特征向量中的元素的数目。可以针对每种gmm状态重复此结构。例如,mean可以是2-d阵列,其包括用于每个向量的元素(第一索引)和用于每个混合分量的行(第二索引)。这可以表示为mean[m,n]。均值向量中的每个元素的大小可以由(例如,mvwidth寄存器中的)以字节为单位的均值向量宽度来定义。

如在此所使用的,术语“var[s]”可以指代逆协方差。var可以被指示为v[m,n]并且具有与mean相同或类似的语法。逆var(表示为var)可以是2-d阵列,其可以包括用于每个向量的元素(第一索引)和用于每个混合分量的行(第二索引)。将它表示为var[m,n]。均值向量中的每个元素的大小可以由mvwidth寄存器中的以字节为单位的方差向量宽度来定义。

如在此所使用的,术语“gconst”可以指代高斯常数。gconst可以表示为w[m],其中m是每种状态下的混合体的数目。例如,gconst可以是1-d阵列,其可以包括用于该状态下的每种混合分量的元素。

如在此所使用的,术语“fv”可以指代数据的某一部分(在此称为“特征向量”),其可在操作期间被复用、在开始的时候被读取并且然后从模块内的缓冲器被复用。这种特征向量可以针对每个音频帧(或不限于音频帧的其他数据类型)保存一组值;这些是正进行评估的输入数据。例如,gmm特征向量阵列可以包括每个特征向量的1-d阵列,表示为fv[n]。可以将多个(例如,高达8个)特征向量指派为2-d阵列。

如在此所使用,术语“score”可以指代gmm得分(gscore)。这种得分可以根据特征向量和混合分量中的每一者来保存评分的结果。gmm得分可以是gmm操作的输出。可以针对每个gmm状态和特征向量保存一个得分数。可以按gmm阶段执行次序(例如,顺序模式的状态索引;或者以由活动列表模式下的活动列表(act)定义的次序)来存储得分。

在操作354处,mmu108将根据需要将来自存储器的页表信息加载到tlb324、326、328和/或330中。

另外,可以对gmmmmu108条目与数据结构两者应用预取,以避免等待到存储器操作。gmmmmu108可以一次读取页表数据的一部分(例如,针对act、score和fv),并且还可以在使用上一个数据地址时预取所应用的下一个地址集。这种预取可以基于由gmm执行核106提供的关于数据的下一个元素所在的位置的信息(例如,在使用非顺序型活动列表的情况下是非顺序的)。在这种示例中,每个顺序流可以存在一个mmu缓冲器,其中每个单独mmu缓冲器可以使用线性地址的空间局域性以及相关联流的顺序行为来读取属于所述流的一组地址。

过程300可以在操作362处继续,在该操作处,dma104可以经由各个dma通道314、316、318和/或320使用并行dma操作来操作。例如,dma104可以促进gmm执行核106与主存储器102之间的读/写操作,直到gmm执行核106已经计算出得分为止。dma引擎将数据带入缓冲器112中,直到对于每个流而言缓冲器已满为止,此时,在dma被停止(stall),直到gmm执行核106使用了缓冲器中的数据的一部分并且所述缓冲器中还留有空间给读取数据的至少一个区块(chunk)(例如,64b)为止。当这个空间变得可用时,向dma发信号来发布对下一个数据区块的读取。应当注意,对于典型地包括多个区块的大型数据块而言,由gmm执行核106的控制逻辑来对dma进行编程。对dma的流控制是经由dma控制(参见例如图1中的“dma控制”)实现的。

过程300可以在操作370处继续,在该操作处,可以经由存储器接口102将经由gmm执行核106计算出的得分写入到主存储器。

过程300可以在操作372处继续,在该操作处,dma可以继续促进gmm执行核106与主存储器102之间的读/写操作,直到读取了计算最后的得分所需的数据为止。可以重复写入操作370,直到已经由gmm执行核计算出最后的得分为止,并且可以经由写入操作380将所述最后的得分写入到存储器。

过程300可以继续重复操作380,在该操作处,可以确定最后的得分并且可以产生指示评分操作完成的中断。

以下关于图4和/或图5可以找到关于过程300的另外的和/或替代的细节。

图4是展示根据本披露的至少一些实现方式安排的示例评分过程400的流程图。过程400可以包括如由操作402等中的一个或多个展示的一个或多个操作、功能或动作。

过程400可以在操作402(“设置”)处开始,在该操作处,可以设置与多种向量数据类型相关联的评分操作。例如,可经由执行核在多个dma上设置与多种向量数据类型相关联的评分操作。

例如,可以经由执行核106将与相应的向量数据类型相关联的各种向量数据流单独地分布在多个直接存储器存取引擎(dma)之中。例如,执行核106可以设置dma操作(例如,每当存取非顺序型时),其中执行核106可以根据由主机完成的操作设置(例如,gmm操作)来操作。如以上所讨论的,dma104可以逐个流地来操作。因此,执行核106可以将单个dma104设置成处理与相应的单个向量数据类型相关联的单个向量数据流。因此,可以经由第一直接存储器存取引擎来处理第一向量数据流,并且可以经由第二不同的直接存储器存取引擎来处理第二不同的向量数据流。根据操作的阶段,可以将dma引擎重新指派给不同的任务(例如,数据流)。

过程400可以在操作404(“向量数据消耗”)处继续,在该操作处,可以消耗向量数据。例如,执行核可以消耗存储在数据缓冲器中的向量数据。例如,执行核106可以在评分操作期间消耗此类向量数据。例如,这种评分操作可以包括高斯混合模型(gmm)型评分操作、仿射神经网络操作、对角矩阵乘法、递归神经网络、复制操作等等,和/或它们的组合。例如,可以在语音识别操作中利用这种gmm型评分操作,以输出最高评分匹配。

过程400可以在操作406(“缓冲器已满节制”)处继续,在该操作处,可以至少部分地基于缓冲器充满度来执行节制。例如,可以至少部分地基于缓冲器充满度来执行节制,其中dma104可以响应于来自数据缓冲器的与给定流相关联的缓冲器已满的指示而开始或停止数据请求。

在这种示例中,每个顺序流可以存在一个缓冲器,其中每个单独缓冲器可以使用线性地址的空间局域性以及相关联流的顺序行为来读取属于所述流的一组地址。

在一些实现方式中,dma可以促进执行核与主存储器之间的读/写操作,直到执行核已经计算出得分为止。dma引擎将数据带入缓冲器中,直到对于每个流而言缓冲器已满为止。此时,dma(例如,与已满的缓冲器相关联的dma)被停止,直到执行核使用了缓冲器中的数据的一部分并且所述缓冲器中还留有空间给读取数据的至少一个区块(例如,64b)为止。当这个空间变得可用时,向dma发信号来发布对下一个数据区块的读取。应当注意,对于典型地包括多个区块的大型数据块而言,由gmm执行核106的控制逻辑来对dma进行编程。对dma的流控制是经由dma控制(参见例如图1中的“dma控制”)实现的。

以下关于图5可以找到关于过程400的另外的和/或替代的细节。

图5提供根据本披露的至少一些实现方式安排的、在经由评分过程500的操作中的示例加速器系统100(更多细节参见例如图1)的原理图。在所展示的实现方式中,过程500可以包括如由动作512等中的一个或多个展示的一个或多个操作、功能或动作。

如所展示的,加速器系统100(更多细节参见例如图1)可以包括执行核106、dma(直接存储器存取)104、mmu(存储器管理)108、主存储器102等等,和/或它们的组合。

过程500可以在操作502“设置(setup)”处开始,在该操作处,可以设置与多种向量数据类型相关联的评分操作。例如,可以经由执行核106在多个dma上设置与多种向量数据类型相关联的评分操作。

例如,可以经由执行核106将与相应的向量数据类型相关联的各种向量数据流单独地分布在多个直接存储器存取引擎(dma)之中。例如,执行核106可以设置dma操作(例如,每当存取非顺序型时),其中执行核106可以根据由主机完成的操作设置(例如,gmm操作)来操作。如以上所讨论的,dma104可以逐个流地来操作。因此,执行核106可以将单个dma104设置成处理与相应的单个向量数据类型相关联的单个向量数据流。因此,可以经由第一直接存储器存取引擎来处理第一向量数据流,并且可以经由第二不同的直接存储器存取引擎来处理第二不同的向量数据流。根据操作的阶段,可以将dma引擎重新指派给不同的任务(例如,数据流)。

如以上所描述的,此类向量数据类型可以包括向量数据,所述向量数据包括:混合分量均值向量、方差向量、高斯常数向量、得分向量和/或特征向量等等,和/或它们的组合。在一个示例中,在gmm评分中,向量数据的一些部分(例如,var、mean、const以及在一些情况下的活动列表)可以以由数据消耗速率产生的速率进行串流。同时,数据的另一部分(在此被称为“特征向量”)可以在操作期间被复用、在开始的时候被读取并且然后从模块内的缓冲器被复用。

过程500可以在操作504(“请求地址转换”)处继续,在该操作处,可以传送地址转换请求。例如,可以在dma104与mmu108之间传送地址转换请求。

如以上所讨论的,dma104可以逐个流地来操作。因此,可以逐个流地在dma104与mmu108之间传送此类地址转换请求。

过程500可以在操作508(“页信息读取请求”)处继续,在该操作处,可以传送页信息读取请求。例如,可以在mmu108与总线接口501之间传送页信息读取请求。

在这种示例中,此页信息可以包括之前所讨论的页表的相关部分,并且在一些情况下可以涉及此类些读取操作(在一些情况下,分层页表的此类读取操作)的序列。单元501可以在此请求与可能地其他未决请求之间进行仲裁,并且将它们作为“读取请求”发送到主存储器102,如以下在操作510处所讨论的。

如以上所讨论的,dma104可以逐个流地来操作。类似地,mmu108也可以逐个流地来操作。因此,可以逐个流地在mmu108与总线接口501之间传送此类向量数据读取请求。

在一些实现方式中,mmu108可以同时读取与多个页有关的信息,并将该信息存储到其缓冲器中。此类操作利用了以下事实:页信息小于来自存储器的单次读取以及dma104的操作是顺序的;因此,可以使用页描述符的空间局域性来预取页信息并且通过此举来减少所需的存储器存取的量。

另外,可以主要将页目录数据存储在存储器管理单元108的寄存器中。

过程500可以在操作510(“读取请求”)处继续,在该操作处,可以传送读取请求。例如,可以将读取请求(例如,页信息读取请求508和/或向量数据读取请求516,如以下所描述的)从总线接口501传送到主存储器102。

过程500可以在操作512(“页信息数据返回”)处继续,在该操作处,可以返回页信息数据。例如,可以响应于来自mmu108的页信息读取请求在主存储器102与mmu108之间返回页信息数据。

过程500可以在操作514(“地址转换数据就绪答复”)处继续,在该操作处,可以传送地址转换数据就绪答复。例如,可以在mmu108与dma104之间传送地址转换数据就绪答复。

过程500可以在操作516(“向量数据读取请求”)处继续,在该操作处,可以传送向量数据读取请求。例如,响应于dma104接收到地址转换数据就绪答复,可以在dma104与总线接口501之间传送向量数据读取请求。

如以上所讨论的,dma104可以逐个流地来操作。因此,可以逐个流地在dma104与总线接口501之间传送此类向量数据读取请求。

过程500可以在操作518(“向量数据返回(vectordatareturn)”)处继续,在该操作处,可以返回向量数据。例如,响应于来自dma104的向量数据读取请求,可以将向量数据从主存储器102返回到数据缓冲器218。

如以上所讨论的,dma104可以逐个流地来操作。类似地,数据缓冲器218也可以逐个流地来操作。因此,可以逐个流地在主存储器102与数据缓冲器218之间传送此类被返回的向量数据。

在这种示例中,每个顺序流可以存在一个缓冲器,其中每个单独mmu缓冲器可以使用线性地址的空间局域性以及相关联流的顺序行为来读取属于所述流的一组地址。

例如,可以将与第一向量数据流相关联的一种类型的向量数据从主存储器102加载到第一转换后备缓冲器型数据缓冲器218中(不过这仅仅是一种示例缓冲器类型);并且同样地,可以将第二不同类型的向量类型从主存储器102加载到第二不同的转换后备缓冲器型数据缓冲器218中。

过程500可以在操作520(“向量数据消耗”)处继续,在该操作处,可以消耗向量数据。例如,执行核106可以消耗存储在数据缓冲器218中的向量数据。例如,执行核106可以在评分操作期间消耗此类向量数据。例如,这种评分操作可以包括高斯混合模型(gmm)型评分操作、仿射神经网络操作、对角矩阵乘法、递归神经网络、复制操作等等,和/或它们的组合。例如,可以在语音识别操作中利用这种gmm型评分操作,以输出最高评分匹配。

如以上所讨论的,dma104可以逐个流地来操作。类似地,数据缓冲器218也可以逐个流地来操作。因此,这种向量数据消耗可以涉及逐个流地在数据缓冲器218与执行核106之间传送。

过程500可以在操作522(“缓冲器已满节制(bufferfullthrottling)”)处继续,在该操作处,可以至少部分地基于缓冲器充满度来执行节制。例如,可以至少部分地基于缓冲器充满度来执行节制,其中dma104可以响应于来自数据缓冲器218的与给定流相关联的缓冲器已满的指示而开始或停止数据请求(例如,向量数据读取请求516和/或地址转换请求504)。

如以上所讨论的,dma104和/或数据缓冲器218可以逐个流地来操作。因此,可以逐个流地来执行这种节制。

在一个示例中,可以至少部分地基于各种转换后备缓冲器的充满度来控制数据消耗。例如,可以通过至少部分地基于存储器管理单元的各种转换后备缓冲器的充满度节制到主存储器的第一直接存储器存取引擎请求,来控制数据消耗。

在一些实现方式中,dma104可以促进执行核106与主存储器102之间的读/写操作,直到执行核106已经计算出得分为止。dma引擎将数据带入缓冲器112中,直到对于每个流而言缓冲器已满为止。此时,dma(例如,与已满的缓冲器相关联的dma)被停止,直到执行核106使用了缓冲器中的数据的一部分并且所述缓冲器中还留有空间给读取数据的至少一个区块(例如,64b)为止。当这个空间变得可用时,向dma发信号来发布对下一个数据区块的读取。应当注意,对于典型地包括多个盘区块的大型数据块而言,由执行核106的控制逻辑来对dma编程。对dma的流控制是经由dma控制(参见例如图1中的“dma控制”)实现的。

过程500可以返回到操作502,在该操作处,设置可以继续再发生直到已经计算出最后的得分为止。例如,这种设置可以基于下一个gmm地址集,所述下一个gmm地址集可以至少部分地基于gmm数据元素的非顺序型活动列表被预取。例如,在当前gmm数据元素完成评分之前,可以经由存储器管理单元至少部分地基于gmm数据元素的非顺序型活动列表来预取下一个gmm地址集。

虽然在此的示例过程的实现方式可以包括采取按所说明的次序示出的所有操作,但是本披露并不限于这个方面,并且在各种示例中,在此的示例过程的实现方式可以包括仅采取所示出的操作的子集和/或采取以与所展示的次序不同的次序示出的操作的子集。另外,尽管特定的一组块或动作被展示为与特定模块相关联,但是这些块或动作可以与和此处所展示的特定模块不同的模块相关联。

在此所描述的系统和/或过程的各种部件可以在软件、固件和/或硬件和/或它们的任何组合中实现。例如,在此所描述的系统和/或过程的各种部件可以至少部分地由计算片上系统(soc)(诸如可以在例如智能电话的计算系统中找到)的硬件来提供。本领域技术人员可以认识到,在此所描述的系统可以包括在相应附图中未描绘的另外部件。

如在在此描述的任何实现方式中所使用的,术语“模块”可以指代“部件”或“逻辑单元”,如以下描述的这些术语。因此,术语“模块”可以指代被配置用于提供在此描述的功能的软件逻辑、固件逻辑和/或硬件逻辑的任何组合。例如,本领域普通技术人员将了解,可替代地,由硬件和/或固件执行的操作可以经由软件部件来实现,所述软件部件可以体现为软件包、代码和/或指令集,并且还将了解,逻辑单元也可以利用软件的一部分来实现其功能。

如在在此描述的任何实现方式中所使用的,术语“部件”指代被配置用于提供在此描述的功能的软件逻辑和/或固件逻辑的任何组合。软件逻辑可以体现为软件包、代码和/或指令集,和/或存储由可编程电路执行的指令的固件。这些部件可以被共同地或单独地体现,以实现为更大系统(例如,集成电路(ic)、片上系统(soc)等等)的一部分。

如在在此描述的任何实现方式中所使用的,术语“逻辑单元”指代被配置用于提供在此描述的功能的固件逻辑和/或硬件逻辑的任何组合。如在在此描述的任何实现方式中所使用的,“硬件”可以包括例如单个的或以任何组合形式的硬连线电路、可编程电路、状态机电路和/或固体,它们存储由可编程电路执行的指令。逻辑单元可以共同地或单独地被体现为形成更大系统(例如,集成电路(ic)、片上系统(soc)等等)的一部分的电路。例如,逻辑单元可以体现在逻辑电路中,以实现在此所讨论的系统的固件或硬件。此外,本领域普通技术人员将了解,由硬件和/或固件执行的操作也可以利用软件的一部分来实现逻辑单元的功能。

另外,可以响应于由一个或多个计算机程序产品提供的指令来采取在此所描述的过程块中的任何一个或多个。此类程序产品可以包括提供指令的信号承载介质,所述指令在由例如处理器执行时可以提供在此所描述的功能。计算机程序产品可以以任何形式的计算机可读介质来提供。因此,包括一个或多个处理器核的处理器可以响应于由计算机可读介质传递到处理器的指令来采取图3、图4和图5中所示的块中的一个或多个。

图6展示了根据本披露的示例系统600。在各种实现方式中,系统600可以是介质系统,但系统600并不限于此上下文。例如,系统600可以结合到个人计算机(pc)、膝上型计算机、超级膝上型计算机、平板电脑、触摸板、便携式计算机、手持式计算机、掌上计算机、个人数字助理(pda)、蜂窝电话、组合式蜂窝电话/pda、电视机、智能设备(例如,智能电话、智能平板电脑或智能电视机)、移动互联网设备(mid)、消息发送设备、数据通信设备等等。

在各种实现方式中,系统600包括耦接至显示器620的平台602。平台602可以从内容设备(诸如内容服务设备630或内容递送设备640或者其他类似内容源)接收内容。包括一个或多个导航特征的导航控制器650可以用于例如与平台602和/或显示器620进行交互。以下更详细地描述了这些部件中的每一个。

在各种实现方式中,平台602可以包括芯片组605、处理器610、存储器612、存储设备614、图形子系统615、应用程序616和/或无线电618的任何组合。芯片组605可以在处理器610、存储器612、存储设备614、图形子系统615、应用程序616和/或无线电618之中提供相互通信。例如,芯片组605可以包括能够提供与存储设备614的交互通信的存储适配器(未描绘)。

处理器610可以被实现为复杂指令集计算机(cisc)或精简指令集计算机(risc)处理器;x86指令集兼容处理器、多核或任何其他微处理器或中央处理单元(cpu)。在各种实现方式中,处理器610可以是双核处理器、双核移动处理器等。

存储器612可以被实现为易失性存储设备,诸如但不限于随机存取存储器(ram)、动态随机存取存储器(dram)或静态ram(sram)。

存储设备614可以被实现为非易失性存储设备,诸如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附连存储设备、闪存、电池应急sdram(同步dram)和/或网络可接入的存储设备。在各种实现方式中,存储设备614可以包括用于当例如包括多个硬盘驱动器时增加对有价值的数字介质的存储性能增强型保护的技术。

图形子系统615可以执行对诸如用于显示的静态或视频图像的处理。例如,图形子系统615可以是图形处理单元(gpu)或视觉处理单元(vpu)。可以使用模拟或数字接口将图形子系统615和显示器620通信地耦接。例如,接口可以是高清晰度多介质接口、显示端口、无线hdmi和/或符合无线hd的技术中的任一种。图形子系统615可以集成到处理器610或芯片组605中。在一些实现方式中,图形子系统615可以是通信地耦接至芯片组605的独立卡。

在此所描述的图形和/或视频处理技术可以用各种硬件架构来实现。例如,图形和/或视频功能可以集成在芯片组内。可替代地,可以使用分立的图形和/或视频处理器。作为另一种实现方式,图形和/或视频功能可以由通用处理器(包括多核处理器)来提供。在其他实施例中,这些功能可以在消费电子设备中实现。

无线电618可以包括能够使用各种合适的无线通信技术发射并接收信号的一个或多个无线电。此类技术可以涉及跨一个或多个无线网络的通信。示例无线网络包括(但不限于)无线局域网(wlan)、无线个人局域网(wpan)、无线城域网(wman)、蜂窝网和卫星网。在跨此类网络进行通信时,无线电618可以根据任何版本中的一个或多个适用标准来操作。

在各种实现方式中,显示器620可以包括任何电视机类型的监视器或显示器。显示器620可以包括例如计算机显示屏、触摸屏显示器、视频监视器、类似电视机的设备和/或电视机。显示器620可以是数字的和/或模拟的。在各种实现方式中,显示器620可以是全息显示器。此外,显示器620可以是可以接收视觉投影的透明表面。此类投影可以传递各种形式的信息、图像和/或对象。例如,此类投影可以是移动增强现实(mar)应用程序的视觉覆盖。在一个或多个软件应用程序616的控制下,平台602可以在显示器620上显示用户接口622。

在各种实现方式中,内容服务设备630可以由任何国家的、国际的和/或独立的服务托管,并且因此经由例如互联网可接入平台602。内容服务设备630可以耦接至平台602和/或至显示器620。平台602和/或内容服务设备630可以耦接至网络660以便将介质信息传达(例如,发送)至网络660和从网络传达(例如,接收)。内容递送设备640也可以耦接至平台602和/或至显示器620。

在各种实现方式中,内容服务设备630可以包括有线电视盒、个人计算机、网络、电话、能够递送数字信息和/或内容的启用互联网的设备或器具、以及能够在内容提供者与平台602和/或显示器620之间经由网络660或直接地单向或双向传达内容的任何其他类似设备。将了解,内容可以经由网络660单向地和/或双向地往返于系统600中的任何一个部件与内容提供者之间进行通信。内容的示例可以包括任何介质信息,包括例如视频、音乐、医疗和游戏信息等。

内容服务设备630可以接收诸如包含介质信息、数字信息和/或其他内容的有线电视节目的内容。内容提供商的示例例可以包括任何有线或卫星电视或无线电或互联网内容提供商。所提供的示例不意图以任何方式限制根据本披露的实现方式。

在各种实现方式中,平台602可以从具有一个或多个导航特征的导航控制器650接收控制信号。控制器650的导航特征可以用于例如与用户接口622进行交互。在各实施例中,导航控制器650可以是指向设备,所述指向设备可以是允许用户将空间(例如,连续的和多维的)数据输入到计算机中的计算机硬件部件(具体地,人机接口设备)。诸如图形用户界面(gui)以及电视机和监视器的许多系统允许用户使用物理姿势来控制计算机或电视机并向计算机或电视机提供数据。

可以通过指针、光标、聚焦环或在显示器上显示的其他视觉指示符的移动在显示器(例如,显示器620)上复制控制器650的导航特征的移动。例如,在软件应用616的控制下,位于导航控制器650上的导航特征可以例如被映射至用户接口622上显示的虚拟导航特征。在各实施例中,控制器650可以不是单独的部件而是可以集成到平台602和/或显示器620中。然而,本披露并不限于在此示出或描述的元件或上下文。

在各种实现方式中,驱动器(未示出)可以包括使用户能够通过触摸例如在初始开机之后启动的按钮立刻打开和关闭类似电视机的平台602的技术。即使当平台被“关闭”时,程序逻辑仍然可以允许平台602将内容串流到介质适配器或其他内容服务设备630或内容递送设备640。另外,芯片组605可以包括对例如6.1环绕声音频和/或高清晰度(7.1)环绕声音频的硬件和/或软件支持。驱动器可以包括用于集成图形平台的图形驱动器。在各实施例中,图形驱动器可以包括外围部件互连(pci)快速图形卡。

在各种实现方式中,系统600中示出的部件中的任何一个或多个可以是集成的。例如,平台602和内容服务设备630可以是集成的,或者平台602和内容递送设备640可以是集成的,或者例如平台602、内容服务设备630和内容递送设备640可以是集成的。在各种实施例中,平台602和显示器620可以是集成的单元。例如,显示器620和内容服务设备630可以是集成的,或者显示器620和内容递送设备640可以是集成的。这些示例并不意图限制本披露。

在各种实施例中,系统600可以被实现为无线系统、有线系统、或两者的组合。当被实现为无线系统时,系统600可以包括适合于通过无线共享介质(诸如一个或多个天线、发射器、接收器、收发器、放大器、过滤器、控制逻辑等)进行通信的部件和接口。无线共享介质的示例可以包括无线频谱部分,诸如rf频谱等。当被实现为有线系统时,系统600可以包括适合于通过有线通信介质(诸如输入/输出(i/o)适配器、利用相应有线通信介质连接i/o适配器的物理连接器、网络接口卡(nic)、光盘控制器、视频控制器、音频控制器等)进行通信的部件和接口。有线通信介质的示例可以包括导线、电缆、金属引线、印刷电路板(pcb)、背板、交换光纤、半导体材料、双绞线、同轴电缆、光纤等。

平台602可以建立一个或多个逻辑或物理信道以传达信息。所述信息可以包括介质信息和控制信息。介质信息可以指代表示针对用户的内容的任何数据。例如,内容的示例可以包括来自语音对话、视频会议、串流视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文字等的数据。来自语音对话的数据可以是例如语音信息、静默时间段、背景噪音、舒适噪音、声调等等。控制信息可以指代表示针对自动化系统的命令、指令或控制字的任何数据。例如,控制信息可以用于通过系统路由介质信息,或者命令节点以预定方式处理所述介质信息。然而,各实施例并不限于图6中示出或描述的元件或上下文。

如上所述,系统600可以用变化的物理风格或形状因子来体现。图7展示了可以体现系统600的小形状因子设备700的实现方式。在各实施例中,例如,设备700可以被实现为具有无线能力的移动计算设备。例如,移动计算设备可以指代具有处理系统和移动电源或供电(诸如一个或多个电池)的任何设备。

如以上所描述的,移动计算设备的示例可以包括个人计算机(pc)、膝上型计算机、超级膝上型计算机、平板电脑、触摸板、便携式计算机、手持式计算机、掌上计算机、个人数字助理(pda)、蜂窝电话、组合式蜂窝电话/pda、电视机、智能设备(例如,智能电话、智能平板电脑或智能电视机)、移动互联网设备(mid)、消息设备、数据通信设备等等。

移动计算设备的示例还可以包括被安排用于由人穿戴的计算机,诸如手腕计算机、手指计算机、戒指计算机、眼镜计算机、皮带夹计算机、臂带计算机、鞋计算机、服装计算机和其他可穿戴计算机。在各种实施例中,例如移动计算设备可以被实现为能够执行计算机应用程序、以及语音通信和/或数据通信的智能电话。尽管作为示例一些实施例可以利用实现为智能电话的移动计算设备进行描述,但是应当理解,其他实施例也可以使用其他无线移动计算设备来实现。各实施例并不限于此上下文。

如图7中所示,设备700可以包括壳体702、显示器704、输入/输出(i/o)设备706和天线708。设备700还可以包括导航特征712。显示器704可以包括适合于移动计算设备的用于显示信息的任何合适的显示单元。i/o设备706可以包括用于将信息输入到移动计算设备中的任何合适的i/o设备。i/o设备706的示例可以包括字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇杆式开关、麦克风、扬声器、语音识别设备和软件等。信息也可以通过麦克风(未示出)输入到设备700中。这种信息可以通过语音识别设备(未示出)数字化。各实施例并不限于此上下文。

可以使用硬件元件、软件元件、或两者的组合来实现各种实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(asic)、可编程逻辑设备(pld)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等等。软件的示例可以包括:软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或它们任何组合。确定是否使用硬件元件和/或软件元件来实现实施例可以根据多种因素而变化,诸如预期的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。

可以由机器可读介质上所存储的代表性指令实现至少一个实施例的一个或多个方面,这些指令代表处理器内的各种逻辑,这些指令在由机器读取时使该机器制作用于执行在此描述的技术的逻辑。此类表示(被称为“ip核”)可以存储在有形的机器可读介质上并且供应给各种客户或制造设施以便加载到制造机器中,它们实际上构成逻辑或处理器。

虽然已经参照各种实现方式描述了在此阐述的某些特征,但是并不旨在以限制性意义来解释本说明书。因此,本披露所涉及的、对本领域技术人员而言显而易见的在此描述的实现方式以及其他实现方式的各种修改被视为是在本披露的精神和范围内。

以下示例涉及其他实施例。

在一个示例中,一种用于评分操作的由计算机实现的方法可以经由执行核逐个流地在多个直接存储器存取引擎上设置与多种向量数据类型相关联的评分操作,其中设置与相应单个向量数据类型相关联的单个向量数据流以用于经由相应单个直接存储器存取引擎进行处理。执行核可以在评分操作期间消耗存储在多个数据缓冲器中的向量数据,其中向量数据是逐个流地被消耗的。可以在数据缓冲器与直接存储器存取引擎之间传送表明与给定流相关联的给定缓冲器具有一定充满度的指示,其中数据缓冲器与直接存储器存取引擎之间的传送是逐个流地的。直接存储器存取引擎可以节制数据请求,以便响应于来自数据缓冲器的表明与给定流相关联的给定缓冲器具有一定充满度的所述指示而停止和/或开始此类数据请求,其中节制是逐个流地进行的。

在另一个示例中,一种用于评分操作的由计算机实现的方法可以进一步包括:逐个流地在直接存储器存取引擎与存储器管理单元之间请求地址转换。可以逐个流地在存储器管理单元与总线接口之间传送页信息读取请求,其中页信息包括分层页表的相关部分的读取操作序列。可以在总线接口与主存储器之间传送页信息读取请求,其中总线接口在未决请求之间进行仲裁。响应于来自存储器管理单元的页信息读取请求,可以在主存储器与存储器管理单元之间返回页信息数据。可以在存储器管理单元与直接存储器存取引擎之间传送地址转换数据就绪答复。响应于直接存储器存取引擎接收到地址转换数据就绪答复,可以逐个流地在直接存储器存取引擎与总线接口之间传送向量数据读取请求。可以在总线接口与主存储器之间传送向量数据读取请求,其中总线接口在未决请求之间进行仲裁。响应于向量数据读取请求,可以逐个流地在主存储器与数据缓冲器之间返回向量数据,其中与一个向量数据流相关联的一种类型的向量数据从主存储器被加载到一个缓冲器中,并且其中每个单独缓冲器利用线性地址的空间局域性以及相关联的向量数据流的顺序行为来读取属于所述相关联的向量数据流的一组地址。可以逐个流地在数据缓冲器与执行核之间传送向量数据。取决于评分操作的阶段,可以经由执行核将直接存储器存取引擎中的一个或多个重新指派给不同的向量数据流,直到已经计算出最后的得分为止。评分操作可以包括以下评分操作类型中的一种或多种:高斯混合模型(gmm)、仿射神经网络操作、对角矩阵乘法、递归神经网络和/或复制操作。可以在语音识别操作中利用评分操作以输出最高评分匹配。向量数据类型可以包括包含以下各项在内的一种或多种数据类型:混合分量均值向量、方差向量、高斯常数向量、得分向量和/或特征向量。

在其他示例中,一种用于在计算机上进行评分操作的系统可以包括:执行核,被配置用于逐个流地在多个直接存储器存取引擎上设置与多种向量数据类型相关联的评分操作,其中设置与相应单个向量数据类型相关联的单个向量数据流以用于经由相应单个直接存储器存取引擎进行处理。多个数据缓冲器可以被配置用于存储与评分操作相关联的向量数据。执行核可以进一步被配置用于在评分操作期间消耗存储在多个数据缓冲器中的向量数据,其中向量数据是逐个流地被消耗的。多个直接存储器存取引擎可以被配置用于在数据缓冲器与直接存储器存取引擎之间传送表明与给定流相关联的给定缓冲器具有一定充满度的指示,其中数据缓冲器与直接存储器存取引擎之间的传送是逐个流地进行的。直接存储器存取引擎可以进一步被配置用于节制数据请求,以便响应于来自数据缓冲器的表明与给定流相关联的给定缓冲器具有一定充满度的所述指示而停止和/或开始此类数据请求,其中节制是逐个流地进行的。显示器与执行核通信地相关联,并且可以被配置用于至少部分地基于评分操作向用户输出信息。

在另一个示例中,一种用于在计算机上进行评分操作的系统可以进一步包括直接存储器存取引擎,所述直接存储器存取引擎进一步被配置用于逐个流地在这些直接存储器存取引擎与存储器管理单元之间请求地址转换。存储器管理单元可以进一步被配置用于逐个流地在存储器管理单元与总线接口之间传送页信息读取请求,其中页信息包括分层页表的相关部分的读取操作序列。总线接口可以进一步被配置用于在总线接口与主存储器之间传送页信息读取请求,其中总线接口在未决请求之间进行仲裁。主存储器可以被配置用于响应于来自存储器管理单元的页信息读取请求而在主存储器与存储器管理单元之间返回页信息数据。存储器管理单元可以进一步被配置用于在存储器管理单元与直接存储器存取引擎之间传送地址转换数据就绪答复。直接存储器存取引擎可以进一步被配置用于响应于直接存储器存取引擎接收到地址转换数据就绪答复而逐个流地在直接存储器存取引擎与总线接口之间传送向量数据读取请求。总线接口可以进一步被配置用于在总线接口与主存储器之间传送向量数据读取请求,其中总线接口在未决请求之间进行仲裁。主存储器可以被配置用于响应于向量数据读取请求而逐个流地在主存储器与数据缓冲器之间返回向量数据,其中与一个向量数据流相关联的一种类型的向量数据从主存储器被加载到一个缓冲器中,并且其中每个单独缓冲器利用线性地址的空间局域性以及相关联的向量数据流的顺序行为来读取属于所述相关联的向量数据流的一组地址。数据缓冲器可以进一步被配置用于逐个流地在数据缓冲器与执行核之间传送向量数据。执行核可以进一步被配置用于取决于评分操作的阶段,将直接存储器存取引擎中的一个或多个重新指派给不同的向量数据流,直到已计算出最后的得分为止。评分操作可以包括以下评分操作类型中的一种或多种:高斯混合模型(gmm)、仿射神经网络操作、对角矩阵乘法、递归神经网络和/或复制操作。可以在语音识别操作中利用评分操作以输出最高评分匹配。向量数据类型可以包括包含以下各项在内的一种或多种数据类型:混合分量均值向量、方差向量、高斯常数向量、得分向量和/或特征向量。

在另一个示例中,至少一个机器可读介质可以包括多条指令,这些指令响应于在计算设备上被执行而使计算设备执行根据以上示例中的任一个所述的方法。

在又一个示例中,一种设备可以包括用于执行根据以上示例中的任一个所述的方法的装置。

以上示例可以包括特征的特定组合。然而,此类以上示例并不限于这个方面,并且在各种实现方式中,以上示例可以包括仅采取这类特征的子集、采取这类特征的不同次序、采取这类特征的不同组合和/或采取除了明确列举的那些特征之外的附加特征。例如,关于示例方法所描述的所有特征可以关于示例设备、示例系统和/或示例制品被实现,并且反之亦然。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1