KeyStone存储器架构
扫描二维码
随时随地手机看文章
序言
随着全球范围内的海量数据对无线和有线网络的强大冲击,运营商面临着严峻的挑战,他们需要不断推出既能满足当前需求也能满足未来需求的网络。因此,通信基础局端设备制造商在致力于降低每比特成本和功耗的同时,也在不断寻求能够满足当前及至未来需求的核心技术。TI最新推出的新型 KeyStone 多内核 SoC 架构能够游刃有余地满足这些挑战。
基于新型 KeyStone 多内核 SoC 架构的器件集成了多达 8 个TMS320C66x DSP CorePac,能够实现无与伦比的定点与浮点处理能力。KeyStone 架构经精心设计,是一款效率极高的多内核存储器架构,允许并行执行任务的同时,还能使所有的 CorePac实现全速处理。本文探讨了 KeyStone 存储器的层级结构,及其将如何与 SoC架构的其他组件进行连接以实现多内核全速处理。
德州仪器 (TI) 积极创新,努力迎接多内核 SoC 技术带来的挑战。TI KeyStone 架构拥有众多组件,其中包含全新的 C66x 定点和浮点 DSP 内核、可实现基于标准的优化功能和接口的可配置协处理器、层级存储器架构、TeraNet 交换结构以及可将上述各组件连结在一起的多内核导航器。KeyStone 架构具备三个存储等级。每个 C66xCorePac 均拥有自己的一级程序 (L1P) 和一级数据 (L1D) 存储器。另外,每个 CorePac 还拥有局域的二级统一存储器。每个局域存储器均能独立配置成存储器映射的SRAM、高速缓存,或是两者的组合。
KeyStone 架构包含共享的存储器子系统,其由通过多内核共享存储器控制器 (MSMC) 连接的内部和外部存储器组成。MSMC 允许CorePac动态地分享程序和数据的内外部存储器。
图 1 - KeyStone 器件方框图 - TMS320TCI6616
2
MSMC 的内部 RAM 允许各部分被配置成共享的二级 RAM 或者共享三级 (SL3) RAM,从而可为程序员提供高度的灵活性。SL2 RAM 仅能够在局域 L1P 和 L1D 高速缓存中缓存,而 SL3另外还可在局域 L2 高速缓存中进行缓存。
为向软件执行提供快速通道,外部存储器同内部共享存储器一样,通过同一存储器控制器进行连接,而并非像在嵌入式处理器架构上所进行的传统做法那样,与芯片系统实现互通互连。外部存储器始终被看作是 SL3 存储器,并可在 L1 和 L2 中缓存。接下来的我们将探讨在KeyStone 架构中实现的各种性能增强。
存储性能增强 C66x CorePac 的内部存储器架构与此前 C6000™ DSP 系列产品相比,主要在四个方面实现了增强,而这突出体现在性能指标和实用性方面。这些改进旨在实现如下优势:1) 无论多个内核和数据 I/O 是否处于高度繁忙状态,都能提高存储器各级的执行效率;2) 更轻松便捷地管理多个内核和数据 I/O 之间的缓存一致性;3) 存储器的保护与地址扩展,以及;4) 将对软错误的保护进一步扩展至较高级别的存储器。
执行效率 —— C66x CorePac 的存储器子系统在功能上与最新的 C64x+™ 和C67x™ 系列 DSP 系列 C64x+™ 和 C67x™ 的相当。每个局域 L1存储器均为 32KB,并能够配置成全速缓存(默认)、全存储器映射 SRAM,或是 4、8 或 16KB 高速缓存选项的组合。L1P 始终为直接映射,而 L1D 则始终为双向集关联 (two-way set-associative)。
图2 – CorePac 存储器增强[!--empirenews.page--]
3
相应地,局域 L2 存储器是高达 1MB 的统一存储器(最初宣布推出的器件为 512KB 或 1MB)。此外,该存储器也可配置为全高速缓存、全存储器映射 SRAM(默认),或是 32、64、128、256 或 512KB 四路集关联高速缓存选项的组合。
至共享存储器子系统的存取路径经过精心的重新设计,能够显著降低至较高级存储器的时延,无论所有CorePac和数据 I/O 是否处于繁忙状态,均能维持相同的效率。
二级存储器效率 —— 与之前的系列产品相比,LL2 存储器器件和控制器的时钟运行速率更高。C66x LL2 存储器以等同于 CPU 时钟的时钟速率运行。更高的时钟频率可实现更快的访问时间,从而减少了因 L1 高速缓存失效造成的停滞,在此情况下必须从 LL2 高速缓存或 SRAM 获取存储器)。光这一项改进就自动使得从 C64X+ 或 C67X 器件进行应用升级实现了很大的速度提升,而且无需为 C66x 指令集进行重新编译。
此外,无论是对用户隐藏的还是由软件命令驱动的高速缓存一致性操作都会变得更高效,而且需要执行的周期数也更少。反之,这也意味着自动的高速缓存一致性操作(例如检测、数据移出)对处理器的干扰更小,因而停滞周期数也更少。手动的高速缓存一致性操作(例如全局或模块回写和/或无效)占用较少的周期即可完成,这就意味着在为共享存储器判优的过程中,实现CorePac 之间或 CorePac 与 DMA 主系统的同步将需要更短的等待时间。
共享存储器效率 —— 为进一步提高共享存储器的执行效率,在 CorePac 内置了扩展存储器控制器 (XMC)。对共享内部存储器 (SL2/SL3) 和外部存储器 (DDR3 SRAM) 来说,XMC 是通向 MSMC 的通道,且架构的构建基础实施在此前具有共享二级(SL2)存储器(比如TMS320C6472 DSP)的器件之上。
图 3 - 共享存储器架构
在以前具有 SL2 存储器的器件上,通向 SL2 的存取路径与通向 LL2的存取路径一样,在邻近内部接口处均有一个预取缓冲器。预取功能可隐藏对共享 RAM 库的访问时延,并可优化代码执行及对只读数据的存取(全面支持写操作)。XMC 虽然也遵循相同的目标,但是却进一步扩展添加了强大得多的预取功能,从而对程序执行和 R/W 数据获取提供了可与 LL2 相媲美的最佳性能。预取功能不仅能在访问存储器之前通过拉近存储器和 C66x DSP 内核之间的距离来降低存取时延,而且还能缓解其他 CorePac 和数据 I/O 通过 MSMC 争夺同一存储器资源的竞争局面。
MSMC 通过 256 位宽的总线与 XMC 相连,而 XMC 则可直接连接至用于内部 SL2/SL3 RAM 的 4 个宽 1024 位存储器组。内部存储器组使 XMC 中的预取逻辑功能能够在未来每次请求访问物理 RAM 之前获取程序和数据,从而避免后续访问停滞在 XMC。MSMC 可通过另一 256 位接口与外部存储器接口控制器直接相连,进一步将 CorePac 的高带宽接口一直扩展到外部存储器。
对于外部存储器而言,KeyStone架构可通过与共享内部存储器相同的通道进行访问,从而较之前的架构实现了显著的增强。该通道的宽度是之前器件的两倍,而速度则为一半,从而大幅降低了到达外部 DDR3 存储器控制器(通过 XMC 和 MSMC)的时延。在此前的 C6000 DSP 中以及众多的嵌入式处理器架构中,外部 CPU 和高速缓存访问是通过芯片级互连进行发布的,而 XMC 则可提供更为直接的最优通道。当从外部存储器执行程序时,其可大幅提高 L1/L2 高速缓存效率,并在多个内核与数据 I/O 对外部存储器并行判优时能够显著降低所带来的迟滞。[!--empirenews.page--]
对于内部和外部存储器,所有的数据 I/O 流量都可通过多条直接通道进入 MSMC 到达芯片,而不是通过 CorePac 存储器控制器,从而在当数据 I/O 要访问 CorePacs 当前没有访问(例如,当 CorePac 从 SL2 执行,而数据 I/O往返于 DDR3 时)的存储器端点时,能使两者处于完全正交的状态;而且在 XMC 预取缓冲器后可提供判优以对 CorePacs 隐藏存储器组之间的冲突。
此外,XMC 还为数据和程序预取嵌入了多流预取缓冲器。程序预取缓冲器可为来自 L1P 和 L2 的读取请求提供服务,从而使其能够在 CPU 需要之前预取高达 128 字节的程序数据。数据预取缓冲器可为来自 L1D 和 L2 的读取请求提供服务。数据预取单元能够支持 8 个预取流,且每个流都能独立地从地址增加方向或地址减少方向预取数据。针对进入 DSP 内核的数据流,预取功能能够有助于减少强制失效损失。在多内核环境中,预取功能还能通过分散带宽峰值来提升性能。为在不增加负面影响的情况下利用预取实现性能提升,可在 16MB 范围内将存储器配置为启用或禁用预取属性。
外部存储器效率——除了将外部存储器连接到 MSMC 所带来的优势,KeyStone 外部存储器还包含了对外部存储器控制器 (EMIF) 的显著改进。KeyStone 架构能够以 1333MT/s以上的速率支持高性能 DDR3 SDRAM 存储器。虽然总线能配置成 16 或 32 位(为节省面板空间和功耗),但其实际支持的总线宽高达 64 位数据宽度。该架构相对于之前的架构具有更大的宽度以及更快的速度,从而允许集成多个更高性能的内核、加速器和数据 I/O。
高速缓存一致性控制——通常在多内核器件以及多器件系统内,数据作为处理的一部分在内核之间共享。KeyStone 架构可提供一些改进措施,以简化共享内部与外部存储器的一致性管理操作。
在 KeyStone 架构中,LL2 存储器始终与 L1D 高速缓存保持一致,所以不需要对一致性管理进行特殊的配置(虽然利用 L1D 一致性命令可实现一些性能优化)。SL2 和 SL3 这两种共享存储器不能由硬件来保障与 L1 和 L2 高速缓存的同步。因此需要软件控制往返于数据 I/O 页面的传输,以及对多内核之间共享缓冲器的访问。
为简化该过程,已将 fence 操作作为新的 MFENCE 指令添加到 CorePac 中。当与简单的 CPU 环路组合使用时,能将 MFENCE 用于实施 fence 操作,以保障读/写访问群组之间的序列一致性。能将其用于对可能从不同路径到达的特定端点的存储器请求进行同步。此外,对于多处理器算法,还可将其用于以特定顺序实现对存储器的存取,而这-顺序从所有 CPU 角度来看都一样。这可大幅简化共享数据段所需的一致性协议。
共享存储器保护与地址扩展 — C64x+ 和 C67x DSP 架构均将存储器保护作为内部存储器设计(L1、L2、SL2)的一部分。KeyStone 架构将存储器保护扩展至外部存储器,同时还增强了对内部存储器进行保护的灵活性。另外,MSMC 允许将外部存储器的地址空间从 32 位扩展至 36 位。
可为每个 C66x DSP 分配唯一的权限 ID (PrivlD) 值。可为数据 I/O 主系统分配一个 PrivID,EDMA 则例外,但它可以继承为每次传输进行配置的主系统的 PrivID 值。KeyStone 器件总共可支持 16 个 PrivID 值。存储器保护属性分别为管理员用户和普通用户分配了读/写/执行访问权限。
局域存储器的存储保护 —— C66x CorePac可提供由软件控制的请求者到存储器映射的灵活性,从而进一步扩展了此前 C6000 架构的存储器保护协议。所有存储器请求者(C66x CPU、EDMA、导航器、PCIe、SRIO 等)均拥有相关联的特权 ID。内部存储器控制器可以区分多达 6 个不同的请求者,并配置所有其他请求者。由于 KeyStone 器件集成了更多的内核以及更多的 DMA 主系统(I/O 和加速器),这一数目已不够用。KeyStone CorePac 允许将系统主控器的 ID 映射到保护逻辑中使用的 ID,以使应用能够获得量身打造的强大保护功能。
图 4 - 存储器保护属性
共享存储器的存储器保护 —— 共享存储器拥有多个存储器保护和地址扩展 (MPAX) 单元。C66x DSP 可通过 XMC 中的局域 MPAX 访问 MSMC 通道,而数据 I/O 则通过 MSMC 中的MPAX 逻辑访问 MSMC,并分别对内部共享存储器和外部存储器进行控制。
MPAX 单元将存储器保护和地址扩展结合成一步完成。正如对局域存储器的访问一样,MPAX 的运行基础为每个交易事务承载的特权 ID,用以代表存储器的请求者。对于每个 PrivID,相关联的 MPAX 单元在内部共享存储器和外部存储器中均支持最多 16 个存储段的定义。每个存储段均独立配置,并提供各自的存储器保护地址扩展属性。每个存储段的大小可以是2 的任意次方,范围介于 4KB 到 4GB 之间。地址扩展功能可将外部存储空间从 32 位地址扩展至 36 位。
图 5 – MSMC 地址扩展
存储器段的地址区间定义非常灵活,而且能够重叠以创建尺寸为非 2 的指数次方大小的段以及附加的存储器区域。[!--empirenews.page--]
地址扩展功能可将 32 位地址重新映射到 36 位,从而支持更大的外部存储器。地址扩展能将 DSP 内核中相同的虚拟地址映射到不同的物理地址,并将多个虚拟地址映射到同一物理地址,这对于同一个存储器来说具有不同的语义。MPAX 单元可将运行在不同 DSP 内核之上的操作系统和应用进行隔离,并能轻松支持共享程序。
图 6 显示了如何在 KeyStone 架构内使用 MPAX 来构建多内核虚拟存储器的实例。假定所有内核均运行同一应用,则可将该共享程序和静态数据加载至共享的内部和外部存储器区域中。私有变量(如数据 1)可以使用各个内核中的同一虚拟地址,同时 MPAX 将其映射至不同的物理存储器地址。软件在运行时无需重新进行任何地址映射即可使相同的代码映像在多个内核上执行。
错误检测与校正 —— 专用于基础局端系统的数代 C6000 器件系列,内部存储空间中包含了软错误校正功能。KeyStone 系列器件以该技术为构建基础,能够进一步将软错误保护扩展至存储器的所有层级。
图 6 - 多内核虚拟存储器
层级系统中的存储器控制器可支持多级保护,并可用于实现对代码段进行全面校正,并对数据空间进行错误检测。L1P、L2 和 SL2(或 SL3 内部 RAM)均包含可用于检测和校正 128 位或 256 位存储器段内单个位错误的奇偶校验信息。另外,我们还将能检测到同一访问中的两个位错误并触发访问 CorePac 产生异常。对于数据存取,仅能检测到位误差,并触发异常。无论发生检测还是校正事件,信息均被存储在错误访问的存储器控制器中,以便为应用和/或主机恢复提供信息援助。
通过 ECC 逻辑可将软错误保护进一步扩展至外部存储器空间。每 64 位数据有一个 8 位 ECC 码,根据选项可配置成支持 32 位和 64 位数据宽度。添加 ECC 需要支持 32 位数据宽度的额外 4 位 DDR3 IC(实现 36 位接口),或额外的 8 位 DDR3 IC(实现 72 位接口)以存放与整个外部数据空间相关的 ECC 值。
总结 新型 KeyStone 架构在存储器架构方面具备各种优势,意味着无论在单内核还是在多内核 SoC 执行环境中都能够直接实现显著的性能提升。与此前的产品系列相比,这些性能提升涉及各级存储器,如局域 L2、共享 L2/L3,以及外部存储器等。通过高效判优和预取机制,性能改进也体现在多内核、加速器以及数据 I/O 的并行访问方面。
针对内核之间以及内核与数据 I/O 之间的共享数据页面,缓存一致性控制的改进可实现更简单的判优。
实施存储器保护和地址扩展可实现高度灵活的编程模型、更大范围的地址搜索并为错误访问提供保护。
针对各级存储器的软错误保护可确保运行时执行不受随机软错误事件的影响,而这一事件会对所有嵌入式处理器造成影响。
Keystone 架构在存储器性能、易操作性以及灵活性方面实现的改进可确保程序员能够实现由功能强大的新型C66X DSP系列提供的全速性能优势。该架构具有卓越的可扩展性,其为具有各种数量的内核、加速器和数据 I/O 的 SoC 系列奠定了坚实基础,。