该技术已申请专利。仅供学习研究,如用于商业用途,请联系技术所有人。

用于存储器内设备访问控制的方法和装置
1.相关申请
2.本技术要求于2020年7月24日提交的名称为“methods and apparatus for in-memory device access control”的美国专利申请号16/937,907的优先权,处于所有目的,其全部内容在此通过引用并入。
背景技术:3.传统上,通过主侧,诸如通过实现存储器管理单元(mmu)、输入/输出mmu或系统mmu,或者经由从属侧,诸如通过在双倍数据速率(ddr)子系统前面实现存储器保护单元(mpu),系统存储器访问控制已经被实现为应用处理器(ap)或片上系统(soc)内的专有功能。为了通过soc实现存储器的安全配置和访问,soc可以包括硬件和软件来监督和保护存储器访问,确保存储器访问控制过程不会阻碍或降低系统性能,并且提供保护以防止进程间损坏、泄漏、伤害和/或安全攻击。
4.正在开发新的soc以用于不断发展的用例,诸如物联网(iot)、可穿戴设备和其他小型设备。此类用例可能有益于将硬件和/或软件的一些部分从soc卸载到外部设备和/或硬件,以减少soc的物理尺寸、成本和功耗。然而,将在传统上被本地实现在soc内的硬件和软件卸载到外部设备可能会带来安全风险和性能下降。
技术实现要素:5.各个方面包括实现用于向soc指示访问通过/违规反馈的方法,该方法为为通过soc的存储器设备的读取/写入事务序列的一部分的方法。各个方面可以包括:接收来自soc的用于配置存储器设备的存储器访问控制的配置消息;基于配置消息来配置存储器访问控制;接收来自soc的访问请求消息,该访问请求消息请求访问存储器设备的存储器单元阵列的存储器基地址和存储器访问范围,其中该访问请求消息可以包括读取/写入操作;将访问请求消息与已配置的存储器访问控制进行比较以确定访问请求消息是否可允许;以及响应于确定访问请求消息可允许而执行读取/写入操作。
6.在一些方面,配置消息可以包括配置安全域id,并且访问请求消息可以包括所请求的安全域id。在一些方面,配置消息可以是包括配置安全域id的经编码的jedec消息,并且访问请求消息可以是包括所请求的安全域id的经编码的jedec消息。在一些方面,将访问请求消息与已配置的存储器访问控制进行比较以确定访问请求消息是否可允许可以包括:确定配置安全域id是否与所请求的安全域id匹配;以及响应于确定配置安全域id与所请求的安全域id匹配,确定访问请求消息可允许,并向soc传输通知指示访问请求消息可允许的通知。这些方面还可以包括:响应于确定配置安全域id与所请求的安全域id不匹配;确定访问请求消息不可允许;存储包括存储器基地址、存储器访问范围以及所请求的安全域id的错误信息;向soc传输指示访问请求消息不可允许的通知;以及响应于接收到来自soc的错误中断请求而向soc发送错误信息。
7.一些方面还可以包括:接收来自soc的解锁密码;确定接收到的解锁密码是否与被
存储在存储器设备中的可接受密码组内的密码匹配;以及响应于确定接收到的解锁密码与可接受密码组内的密码匹配而解锁存储器设备门逻辑以允许存储器访问控制接收配置消息。一些方面还可以包括:从soc接收锁定命令,该锁定命令被配置为在存储器设备的寄存器内设置锁定位;以及设置锁定位以防止配置的存储器访问控制的配置改变。
8.另外的方面包括具有处理器的存储器设备,该处理器被配置为执行以上概括的任何方法的操作。另外的方面包括具有用于执行以上概括的任何方法的功能的部件的存储器设备。
附图说明
9.并入本文中并构成本说明书的一部分的附图图示了示例性实施例,并且与上面给出的一般说明和下面给出的详细说明一起用于解释各种实施例的特征。
10.图1是图示了根据一些实施例的用于提供安全存储器内设备访问控制的示例计算系统100的组件框图。
11.图2是图示了根据一些实施例的包括用于提供安全存储器内设备访问控制的门的示例计算系统200的组件框图。
12.图3是图示了根据一些实施例的用于提供安全存储器内设备访问控制的示例计算系统300的组件框图。
13.图4是图示了根据一些实施例的用于提供安全存储器内设备访问控制的方法400的过程流程图。
14.图5是图示了根据一些实施例的包括用于提供安全存储器内设备访问控制的数据和配置事务路径的示例计算系统500的组件框图。
15.图6是图示了根据一些实施例的用于监测安全存储器内设备的访问违规的方法600的过程流程图。
16.图7图示了根据一些实施例的用于提供安全存储器内设备访问控制的系统存储器映射700。
17.图8是图示了根据一些实施例的用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的过程流程图。
18.图9是图示了根据一些实施例的作为用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的一部分而可以由存储器设备执行的替代操作的过程流程图。
19.图10是图示了根据一些实施例的作为用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的一部分而可以由存储器设备执行的替代操作的过程流程图。
20.图11是图示了根据一些实施例的作为用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的一部分而可以由存储器设备执行的替代操作的过程流程图。
21.图12是图示了根据一些实施例的作为用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的一部分而可以由存储器设备执行的替代操作的过程流程图。
22.图13图示了根据一些实施例的智能手表1300形式的示例可穿戴计算设备。
23.图14是根据一些实施例的可以通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的网络计算设备1400的示例的组件框图。
24.图15是适用于实现一些实施例的智能电话1500形式的示例无线设备的组件框图。
具体实施方式
25.将参考附图详细描述各种实施例。在可能的情况下,将贯穿附图使用相同的附图标记来指代相同或相似的部分。对特定示例和实施例进行参考是为了示例目的,而不是为了限制各种实施例或权利要求的范围。
26.各种实施例提供了用于提供安全存储器内设备访问控制的解决方案,以在不引入安全风险和性能下降的情况下实现将硬件和/或软件的一些部分卸载到外部设备而降低soc尺寸、成本和功耗。
27.本文中所使用的术语“无线设备”是指蜂窝电话、智能电话、便携式计算设备、个人或移动多媒体播放器、自动车辆、自动和半自动车辆内的无线通信元件、附加到或并入到各种移动平台中的无线设备、支持互联网的多媒体蜂窝电话以及包括存储器、无线通信组件和可编程处理器的类似电子设备。
28.术语“片上系统”(soc)在本文中被用来指代包含集成在单个衬底上的多个资源或处理器的单个集成电路(ic)芯片。单个soc可以包含用于数字、模拟、混合信号和射频功能的电路。单个soc还可以包括任意数目的通用或专用处理器(数字信号处理器、调制解调器处理器、视频处理器等)、存储器块(诸如rom、ram、闪存等)和资源(诸如定时器、稳压器、振荡器等)。soc还可以包括用于控制集成资源和处理器以及用于控制外围设备的软件。
29.术语“系统级封装”(sip)在本文中被用于指代在两个或更多个ic芯片、衬底或soc上包含多个资源、计算单元、核心或处理器的单个模块或封装。例如,sip可以包括单个衬底,多个ic芯片或半导体管芯以竖直配置方式堆叠在该衬底上。类似地,sip可以包括一个或多个多芯片模块(mcm),多个ic或半导体管芯在这些模块上被封装到统一衬底中。sip还可以包括多个独立的soc,这些soc经由高速通信电路而耦合在一起并紧密封装,诸如在单个主板上或在单个无线设备中。soc的紧密有助于高速通信以及存储器和资源的共享。
30.在常规计算设备中,存储器访问控制组件和电路物理地位于那些计算设备内。例如,为了访问外部随机存取存储器(ram),soc将在soc的物理布局内包括用于存储器访问控制的组件和电路,以使得由soc控制对ram的访问。
31.各种实施例是在存储器设备内实现安全存储器访问控制而不是在soc内实现安全存储器访问控制。各种实施例可以包括:在存储器设备内使能访问控制:将每个事务中的发起者的安全域传送到存储器:在存储器设备中实施包括配置、策略实施和错误指示在内的访问控制;作为读取/写入序列的一部分而检查访问错误指示;以及作为系统初始化序列的一部分而建立对存储器设备的访问控制。
32.各种实施例包括soc内的安全机制,诸如门和熔丝,其允许soc配置位于存储器设备内的存储器访问控制,该存储器设备在soc的物理布局的外部,但是与soc电通信。通过将存储器访问控制从soc卸载到一个或多个存储器设备,可以降低soc的物理尺寸、成本和功耗。在存储器设备内而不是在soc内实现存储器访问控制的其他好处包括:消除对范围广泛
的soc供应商的专有访问控制方案的需求,并且因此提高标准化和可通信性;允许在安全存储器系统中使用低或中等复杂度的微处理器芯片;在众多微处理器、应用处理器(ap)或soc中重用访问控制固件/软件;以及开发能够包括计算和访问控制之类的功能性的新的、更复杂的存储器设备(例如,在存储器计算设备中/附近)。
33.图1是图示了根据一些实施例的用于提供安全存储器内设备访问控制而不是在soc内的示例计算系统100的组件框图。各种实施例包括在存储器设备内实现存储器访问控制硬件块,诸如可以在与处理设备(例如,ap、soc、sip等)进行电通信的系统内实现的ram 122。各种实施例可以以存储器设备的形式实现,该存储器设备诸如是动态ram(dram)、存储存储器、非易失性ram(nvram)或者在系统内可以与soc 140电通信的任何其他类型的存储器设备或模块。
34.soc可以在具有一个或多个安全ram设备的系统内被实现。因此,可以执行附加的握手协议或过程以在不安全的soc和安全的ram之间建立安全级别。例如,可以执行附加的过程以通过总线120(例如,高速总线、ram总线等)在soc 140和ram 122之间建立信任。soc可以包括可信程序102、中央处理单元(cpu)104、静态ram(sram)106、只读存储器(rom)108、包括前端112的ram存储器控制器110、接口控制114以及物理接口(phy)116、访问存储存储器144的存储存储器控制器142和熔丝146。ram 122可以包括phy 124和ram单元阵列138。ram 122还可以包括信任硬件块125,该信任硬件块125包括门126和熔丝128。ram 122还可以包括访问控制硬件块130,该访问控制硬件块130包括访问控制配置块132、访问违规校正子块134和策略实施块136。soc 140可以经由phy 116而被电耦合到ram 122的phy 124而传达握手协议以允许soc 140配置访问控制硬件块130。ram 122的信任硬件块125包括门126和熔丝128,可以被实现以建立soc 140和ram 122之间的信任。一旦建立信任,那么soc 140可以配置访问控制硬件块130以根据各种实施例提供存储器保护。
35.在一些实施例中,ram 122内的访问控制硬件块130在功能上可以与物理上在soc内的传统访问控制类似,并且可以执行包括检查启动器、安全域、物理地址和访问类型的过程,以确定它是读取访问还是写入访问,然后允许存储器访问ram单元阵列138以进行授权的事务。在可以经由访问控制配置块132对访问控制硬件块130进行初始化之前,门126可以被解锁。当在cpu 104上运行的可信程序102向ram 122发送解锁密码时,可以发生解锁,在ram 122中检查密码与驻留在熔丝128中的值相对应。密码可以是秘密,并且可以预先被供应到ram熔丝128中。如果密码解锁成功,则门126可以打开对访问控制配置块132的读取/写入访问,并且可信程序102可以对访问控制配置块132进行初始化,就像它根据传统方法而被包含在soc内一样。在完成初始化之后,门126可以被返回到锁定状态。对访问控制配置块132的附加改变可以始终遵循这个解锁/改变/锁定过程。一旦访问控制硬件块130被初始化,策略实施块136就可以监测和调节soc 140和ram单元阵列138之间的任务模式流量。
36.图2是图示了根据一些实施例的示例计算系统200的组件框图,其示出了耦合到信任硬件块125中的逻辑204的门126的细节,该门126被配置为用于提供安全存储器内设备访问控制。
37.参考图1和图2,门126可以包括一个或多个传输门202和控制逻辑204。传输门202可以包括一个或多个在线开关,该在线开关将phy 124连接到访问控制硬件块130/将访问控制硬件块130的连接断开,访问控制硬件块130可以提供对ram单元阵列138的访问。如上
面所提及的,phy 124可以提供与总线120相关联的连接。连接120d对应于数据信号,并且连接120c对应于地址/控制信号。phy 124可以经由连接214d而向信任硬件块125的传输门202和控制逻辑204提供与连接120d相关联的数据信号。phy 124可以经由连接214c向信任硬件块125的传输门202和控制逻辑204提供与连接120c相关联的地址/控制信号。
38.进一步如图2中所图示,每个传输门202可以包括第一触点和第二触点。第一触点可以电耦合到对应的(一个或多个)数据连接214d和地址/控制连接214c,并且在门或开关的另一侧上的第二触点可以电耦合到对应的(一个或多个)门控数据连接216d和门控地址/控制连接216c。控制逻辑204可以经由(一个或多个)连接218而电耦合到每个传输门202,可以通过(一个或多个)连接218提供门控制信号以打开和关闭各个开关。在这方面,信任硬件块125的“锁定状态”可以对应于其中打开传输门202以防止访问门控连接216d和216c的操作状态。
39.传输门202功能的替代实施例可以包括具有由门控制218所控制的输出使能的双向收发器、可以在门控制218的控制下经由电源轨通电/断电的双向收发器或者在门控制218的控制下可以具有输出使能或电源轨的双向锁存器/寄存器。所采用的电路可以有目的地被设计以用于双向信号,或者可以由两个分开的电路组成以用于处理与写入和读取数据流量相对应的每个(例如,前向和反向)方向。
40.在一些实施例中,当存储器设备122被断电时,控制逻辑204可以从soc 140的电源管理器控制器接收对应的命令,并且作为响应而经由(一个或多个)连接218发送“锁定”门控制信号到传输门202。门控制信号可以包括单独的信号(例如,针对一个传输门为一个门控制线)或单个信号(例如,针对所有传输门为一个门控制)。在一些实施例中,传输门202可以被电源开关取代,该电源开关将访问控制硬件块130通电到ram单元阵列138或与ram单元阵列138断电。响应于“锁定”门控制信号,传输门202可以被打开以防止访问门控连接216d和216c。以这种方式,当启动存储器设备时,门机构126处于“锁定状态”,其中传输门202处于打开位置以最初防止读取/写入操作访问ram存储器单元阵列138。
41.如参考图1所描述,当系统200被启动并且可信程序102开始在cpu 104上执行时,存储在soc 140上的(一个或多个)熔丝146中的解锁密码可以被获取并提供给控制器110,该控制器110通过phy116向phy 124传输值。信任硬件块125中的控制逻辑204可以经由例如,信任硬件块125中的熔丝数据总线220和熔丝控制总线222获取(一个或多个)熔丝128中所供应的传输门值。如图2中所图示,信任硬件块125和/或(一个或多个)熔丝128可以包括控制器212以促进与控制逻辑204的通信。控制逻辑204可以将传输门值与从soc 140接收的解锁密码进行比较。如果解锁密码与传输门值匹配,则控制逻辑204可以经由(一个或多个)连接218向传输门202发送“解锁”门控制信号。响应于“解锁”门控制信号,传输门202可以被关闭,从而将(一个或多个)数据连接214d和地址/控制连接214c分别连接到(一个或多个)门控连接216d和门控地址/控制连接216c。在该“解锁状态”中,门机构126可以经由数据总线224d和控制总线224c提供对访问控制硬件块130的不受限制的访问。
42.如上面所提及,soc 140和门控ram 122之间的密码交换可以以各种方式来实现。在一些实施例中,可以经由(一个或多个)熔丝146、128来实现简单的未加密密码交换。在一些实施例中,安全密码交换可以采用任何期望的(一个或多个)加密算法以通过更复杂或附加的握手协议或过程来提高安全级别。如图2中所图示,当安全密码交换采用加密时,信任
硬件块125中的控制逻辑204可以包括支持解码功能(块206)、散列函数(块208)和检查功能(块210)的逻辑模块。
43.信任硬件块125中的解码逻辑206可以经由总线214c接收控制和地址信息,并且经由总线214d接收数据。在一些实施例中,可以实现预定的和/或标准化的协议来对控制逻辑204进行控制、交换诸如密钥和密码之类的信息或者对诸如熔丝128之类的元件进行初始化和编程。例如,在控制和地址总线214d上可能存在特定的命令,其可以由解码逻辑206解码,然后可以启动特定的命令功能。一些实施例可以包括与每种类型的功能相关联的唯一命令和数据,诸如复位门逻辑、多个位置中的程序熔断数据、程序私钥、程序密码、程序自毁失败尝试、使能篡改机制、输入密钥模数p、输入密钥基数g、检索散列、解锁未加密密码、解锁加密密码等。
44.信任硬件块125中的解码逻辑206可以负责响应于传入的控制、地址和数据来解析和触发适当的操作。如图2中所图示,控制和地址214c以及数据214d连接到达传输门202,并且如果解锁,则可以传播到访问控制硬件块130,该访问控制硬件块130可以执行类似的预定和/或标准化任务模式操作,诸如ram单元阵列读取、ram单元阵列写入、ram单元阵列页面选择、ram单元阵列修复、ram设备配置、phy高级配置以及与防篡改功能无关的任何其他功能性。
45.散列函数208可以执行用于秘密密钥交换过程的模算术运算,并且可以包括查找表和/或模加法顺序和并行计算逻辑。检查功能210可以被包括在信任硬件块125的控制逻辑204中,用于将从soc 140发送的密码与先前编程到信任硬件块125中的本地熔丝128中的本地副本进行比较。解密逻辑(未示出)可以被包括在信任硬件块125的检查功能210内,以允许soc 140使用加密来发送密码以防止窥探者在密码经由外部总线120传输时查看该密码。如果soc 140已经对密码进行了加密,那么解密逻辑可以首先使用在诸如diffie-hellman方法之类的安全交换过程期间导出的共享密钥来对密码进行解密。
46.在一些实施例中,在已经发生多个不成功的解锁事件的情况下,信任硬件块125中的熔丝128可以被激活以永久禁用控制逻辑204,从而防止未来对存储器的访问。
47.图3是图示了根据一些实施例的用于提供安全存储器内设备访问控制的示例计算系统300的组件框图。参考图1至图3,除了由cpu104实现的可信程序102之外,soc 140还可以包括实现各种可信程序的处理单元。例如,soc 140可以包括实现可信程序306的网络处理单元(npu)308,其中npu 308电连接到总线118。
48.与ram 122电通信的soc 140可以在每次soc执行ram单元阵列138的新访问尝试时,配置访问控制硬件块130。在配置访问控制硬件块130之前,soc 140和ram 122可以被初始化以配置任务模式存储器访问过滤。例如,可以在soc 140配置和初始化访问控制硬件块130之前执行密钥交换并建立安全通道。soc 140的安全实体或组件可以包括用于打开门126的密钥或密码。如上所述,soc 140可以将密钥传输到ram 122以打开门126,然后允许soc 140配置访问控制硬件块130以用于对ram单元阵列138的正确访问进行初始化。在访问控制硬件块130的配置之后,soc 140可以在ram 122内设置锁定位以防止对访问控制硬件块130的进一步修改。soc 140的安全实体也可以向访问控制硬件块130发出命令,以在经由已建立的安全通道交换存储器信息之后为后续的未来存储器访问尝试再次改变配置。换句话说,soc 140可以使用存储在soc 140的安全实体中的密钥或密码/通行码来解锁门126、
用适当的存储器访问信息配置访问控制硬件块130、锁定配置以在对ram单元阵列138的访问正在进行时防止对安全通道的修改以及在安全通道已被配置和锁定之后使得访问控制硬件块130能够开始访问ram单元阵列138。
49.ram 122可以为由soc 140的侧控制提供寄存器接口。ram 122可以包括用于ram单元阵列138内的每个访问区域的锁定位,以防止对配置的进一步修改。在soc到ram初始化之后,可以设置、使能或以其他方式配置锁定位以锁定在访问控制硬件块130的最新配置。ram 122可以包括用于ram单元的每个访问区域的使能位阵列138,以使得设置使能位允许实施(例如,经由策略实施块136)已配置的访问控制硬件块130。
50.soc 140可以配置访问控制硬件块130以通过在发送到ram 122的命令内编码访问信息来访问ram单元阵列138的特定部分或域。例如,soc 140可以在经由数据和访问/控制通道(例如,连接120d、120c、214d、214c、216d、216c)而传输到ram 122的命令内编码有关存储器基地址(例如地址32)、存储器数据尺寸和/或范围(例如数据34)以及访问域id(例如id36)的信息。针对每个访问区域的基地址和尺寸信息可以根据存储器设备访问方案来表述,诸如以ram单元阵列138的存储器单元行的粒度。在一些示例中,访问域id/安全域id可以通过与数据和访问/控制通道分开的总线而被传输到ram 122。例如,ram存储器控制器110可以经由连接302i和304i将安全域id传输到phy 124,并且随后传输到访问控制硬件块130。
51.编码命令可以包括用于访问针对每个访问区域或域的正确配置的信息。编码命令可以包括安全id或域id,并且策略实施块136可以检查安全id以验证soc 140正试图访问哪些域。编码命令还可以包括用于为ram单元阵列138的每个支持的安全域指定读取和写入访问权限的信息。换句话说,编码命令可以指定从安全域读取存储器信息将存储器信息写入到安全域还是同时从安全域读取和写入到安全域。例如,ram 122可以支持四个安全域,这四个安全域可以被映射到四个soc 140侧安全域,诸如ap、图形、数字信号处理(dsp)和安全处理器。针对每个访问控制区域,可以存在四个位来指示用于每个安全域的读取权限,以及四个位来指示用于每个安全域的写入权限。soc 140可以配置安全域id如何被映射到soc 140安全域。例如,soc 140可以定义或以其他方式将安全id值0赋予ap高级操作系统(hlos),将1赋予ap安全实体,将2赋予图形,并且将3赋予安全处理器。可以在编码命令中为ram单元阵列138内的每个特定安全域指定读取/写入访问权限。
52.在一些实施例中,访问控制硬件块130的访问违规校正子块134可以监测和报告在访问控制配置之前和访问控制配置期间以及在访问控制硬件块130被配置之后跨过并建立的安全通道的存储器交换期间发生的任何错误。ram 122可以包括错误中断引脚,当访问违规校正子块134观察到错误时,该错误中断引脚可以向soc 140传输中断信号。例如,在访问控制硬件块130已经被适当地配置之后的存储器访问期间(例如,从ram单元阵列138内的安全域读取和/或写入到其中),访问违规校正子块可以观察到一个或多个错误已经发生。响应于观察和记录(一个或多个)错误,然后访问控制可以经由连接304e和302e从phy 124向soc 140的ram存储器控制器110发送错误中断信号。错误指示/中断信号/引脚(例如,连接302e)可以在读取或写入命令被执行之后的至少一个时钟周期被soc 140感测到。对于读取错误,错误指示可以是读取响应的一部分,以使得读取响应可以包括数据总线(例如,连接120d)上的未定义值。对于写入错误,可能需要附加的时钟周期来感测错误中断引脚,以使
得访问违规校正子块134可以分析写入命令是否被错误地执行或者无法被正确地执行,然后生成指示写入命令导致一个或多个错误的指示以传输到soc140。由访问违规校正子块134生成的错误指示可以包括错误类型(例如,读取/写入错误)、对应于ram单元阵列138的错误地址以及该错误对应于哪个安全域id。例如,错误中断信号中报告的安全域id可以标识在发生(一个或多个)错误时soc 140的哪个安全域(例如,ap hlos、ap安全实体、图形、安全处理器等)试图访问ram单元阵列138。
53.错误指示可以包括作为针对单个读取或写入操作的结果而发生的一个或多个错误的该信息。例如,访问违规校正子块134可以存储在soc 140被计时以感测所发生的错误中的至少一个之前可能已经发生的一系列错误。因此,经由访问违规校正子块134创建错误缓冲器可以允许soc 140在一个时钟周期内接收错误的综合报告,而不会遗漏在最近观察到的错误之前的一个或多个时钟周期可能已经发生的任何错误。在一些实施例中,报告给soc 140的错误指示可以包括在访问控制配置块132、策略实施块136和ram单元阵列138处沿着数据和/或控制连接已经被拒绝的存储器访问命令的位置的指示。在一些示例中,访问违规校正子块134可以包括计数器,该计数器对作为一个或多个存储器访问命令的结果而发生的错误的数目进行计数。
54.图4是图示了根据一些实施例的用于提供安全存储器内设备访问控制的方法400的过程流程图。参考图1至图4,方法400的操作可以由对外部存储器设备(例如ram 122)进行配置的soc(例如soc140)的处理器(例如cpu 104、npu 308)执行。
55.在块402至418中执行的操作的顺序仅仅是说明性的,并且在一些实施例中可以以任何顺序并且部分同步地执行块402至418的操作。在一些实施例中,如所描述地,方法400可以由独立于外部存储器设备,但是与外部存储器设备相结合的设备的处理器来执行。例如,方法400可以被实现为在soc的处理器内或在soc内的专用硬件中执行的软件模块,其发出命令以建立安全存储器通道,并且访问外部存储器设备的存储器,并且以其他方式被配置为采取行动并存储数据。
56.在块402中,可以禁用对存储器设备的访问。在默认情况下,被设计成具有存储器内安全访问控制的存储器设备可以处于禁用状态,在该状态下,存储器设备可以由诸如soc之类的外部处理设备来配置。例如,如参考图1至图3所描述,存储器设备可以是ram 122,其可以具有处于打开状态的传输门202,以使得任何处理设备(例如,soc 140)在与ram 122电耦合/配对后将无法访问存储器(例如,ram单元阵列138)。存储器设备的初始条件还可以具有未初始化或以其他方式编程的密钥/通行码/密码的默认值,以使得私钥可以具有空白/未编程的默认状态或默认值0。例如,ram 122的熔丝128可以具有默认私钥值0。
57.在块404中,可以将soc和存储器设备配对。工厂初始化可以发生在包括soc和外部存储器设备的系统的现场实现之前,以使得soc和存储器设备被编程或发出特定的密钥/密码/通行码以允许在soc和存储器设备之间建立安全访问通道。初始化可以包括在将soc锁定在存储器设备之外之前烧录(一个或多个)私钥、(一个或多个)密码以及最大访问尝试数目。例如,在由soc多次尝试访问失败之后,存储器设备可能会禁用访问控制(例如,通过防止门的状态改变/将门保持在解锁状态),防止与存储器设备电通信的未经授权的soc进行潜在的黑客攻击。
58.在块406中,可以启动包括soc和配对的外部存储器设备的系统。系统启动可以包
括(即,在硬连线系统中)物理地配对soc和存储器设备,然后给系统供电。例如,soc 140可以被硬连线到ram122,以使得soc 140和ram 122在物理上位于单个系统外壳内并耦合在单个系统外壳内。
59.如参考图2所描述,在块408中,一旦soc和存储器设备被供电并启动,soc就可以与存储器设备的信任硬件块125交换密钥/密码信息。存储器设备处于默认锁定状态,信任硬件块125可以接收来自soc的密钥/密码信息,并且逻辑204可以将接收到的密钥/密码信息与存储在熔丝存储器128中的信息进行比较以验证soc是否具有配置存储器设备的访问控制硬件块130的访问控制策略的权限。如果逻辑204验证了soc权限,则信任硬件块125可以为soc解锁门126,以配置访问控制硬件块130的访问控制。soc可以从公钥组中随机选择以传输到存储器设备,以允许存储器设备确定访问是否应被授权。如块404中所述,该公钥组可以由soc配置和存储。
60.在确定块410中,信任硬件块125的逻辑204可以确定由soc提供的密钥信息是否有效。在一些实施例中,信任硬件块125的逻辑204可以根据块404中描述的过程通过与存储器设备中初始化的私钥信息进行比较来确定在确定块410中的密钥是否有效。如参考图2所描述,如由信任硬件块125的控制逻辑204所确定,如果由soc传输的密钥无效,则存储器设备将保持在锁定状态(即门打开),或者如果密钥有效,则存储器设备将改变为解锁状态(即门关闭)。
61.响应于确定由soc提供的密钥无效(即,确定块410=“否”),soc可以如块408中所述地通过选择其他公钥来尝试进一步的访问尝试,直到特定次数的访问尝试可能发生并且存储器设备保持锁定状态。
62.响应于确定由soc提供的密钥有效(即,确定块410=“是”),在块412中,信任硬件块125可以解锁以建立与soc的安全连接,并且在向存储器(例如,ram单元阵列138)发出读取/写入命令之前,允许soc为了配置的目的对访问控制硬件块130进行访问。如参考图2所描述,该过程可以由soc和经配对的存储器设备执行。在一些实施例中,由soc授权的访问可以包括解锁存储器设备的寄存器以用于对访问控制进行配置。
63.在块414中,soc可以向存储器设备发送命令以配置并随后锁定访问控制硬件块130的存储器访问控制。如参考图3所描述,soc可以向存储器设备发出编码命令以配置访问控制硬件块130的访问控制而准备通过安全通道执行读取/写入存储器操作。由soc传输并由存储器设备的访问控制配置块接收的编码命令可以包括访问配置参数,该访问配置参数包括基地址、尺寸或地址范围以及安全域id,以确定soc的哪些安全实体正在尝试访问存储器的特定部分以及要访问存储器内设备内的哪些存储器和多少存储器。soc的处理器可以向访问控制硬件块130中的访问控制配置块132发出读取/写入操作,以准备用于交换存储器信息的安全通道。
64.在一些实施例中,读取/写入命令可以根据jedec存储器标准而从soc传输到存储器设备。例如,实现jedec标准可以包括通过jedec命令(cmd)和数据(data)总线传输读取/写入命令,其中命令操作码*(cmd opcode*)指定操作是读取还是写入。例如,表1和表2图示了使用jedec标准配置访问控制配置块的地址空间以定义访问配置参数(例如,基地址、地址范围、安全域id)的写入命令,其中读取、写入、cas-2、mrw-1和mrw-2(模式寄存器写入)是现有的jedec命令。特殊写入和特殊cas-2可以是经修改的jedec协议命令的命令,被用来对
存储器设备的访问控制配置块的寄存器空间进行编程。
65.表1
[0066][0067]
表2
[0068][0069]
作为soc执行如表1和表2中所示的命令的结果,访问控制配置的32字节寄存器空间被配置为定义访问配置参数。表1和表2中所示的命令可以根据需要被重复多次,以在针对每个安全域的访问控制配置块中配置附加的地址空间。
[0070]
在一些实施例中,jedec协议可以取决于包括soc和存储器设备的系统的应用来以各种格式进行利用,以使得存储器设备可以是标准化的或应用特定的。例如,表3和表4图示了一系列命令,其用于使用现有的jedec命令来配置访问控制配置块的地址空间以定义访问配置参数。
[0071]
表3
[0072]
命令csca0ca1ca2ca3ca4ca5ca6ck写入 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ2[0073]
表4
[0074]
命令csca0ca1ca2ca3ca4ca5ca6ckcas-2 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ2[0075]
除了表3和表4中所示的命令之外,soc可以将指定要被修改的访问配置地址的指令传输到存储器设备的访问控制硬件块130内的访问控制配置块。例如,soc可以传输包括定义访问配置地址的8字节数据的32字节的命令和定义访问配置参数的24字节数据。该指令可以在soc执行cas-2命令的同时,同步或基本同时地传输,以使得存储器设备的访问控制硬件块130内的访问控制配置块可以将写入(write)和cas-2命令与接收到的访问配置地址和参数信息相关联。如此,访问控制硬件块130内的访问控制配置块可以被配置为当通过一个总线接口接收到cas-2命令时特别地监测通过另一个总线接口对包括访问配置地址和参数信息的指令的接收。表3和表4中所示的命令可以根据需要被重复多次,以便为每个安全域配置访问控制配置块内的附加地址空间。
[0076]
表1至表4仅图示了允许soc将访问配置参数写入到访问控制配置块的地址空间的示例。可以执行读取命令以与写入命令类似的方式从访问控制硬件块130内的访问控制配置块的寄存器空间读取访问配置参数信息(即,在表1至表4中的jedec命令中将“写入”替换为“读取”)。
[0077]
如上所述,soc可以通过利用存储器设备的访问控制硬件块130内的访问控制配置块写入到特定地址空间来配置访问配置参数。访问配置参数可以定义在访问控制配置被设置和锁定以在soc和存储器设备之间建立安全通道之后由soc执行的可允许访问类型。例如,soc可以执行与如先前在访问控制硬件块130的访问控制内配置的基地址、地址范围和安全域id相对应的读取和写入操作。如果soc尝试发出读取或写入请求数据到例如,在配置访问配置参数时未定义的安全域,那么访问控制硬件块130将记录错误,并且向soc发送包括与错误相关的信息的中断(即,如参考图3的访问违规校正子块134所描述)。
[0078]
一旦访问控制硬件块130的访问控制已经根据soc所发出的命令而被配置,则soc也可以向存储器设备的访问控制硬件块130发出命令以设置锁定位来锁定在当前的访问控制配置,以防止对配置的修改。在一些实施例中,soc可以向存储器发出命令以将锁定位取消设置,从而允许改变访问控制配置,诸如以实现新的策略改变或存储器改变。soc还可以向存储器设备发出命令以设置使能位,从而允许当前配置的访问控制的实施(即,根据已配置的访问控制配置块在soc和存储器设备之间建立安全通道)。
[0079]
在块416中,soc可以访问存储器设备的存储器阵列。例如,在配置访问控制硬件块130之后,soc 140可以访问ram单元阵列138以执行读取/写入操作。由soc传输并由存储器设备接收的编码命令可以包括附加信息,该附加信息包括安全域id以确定soc的哪些安全实体正在尝试访问存储器设备内的存储器的特定部分。soc的处理器可以在没有访问保护的情况下发出页面打开/关闭操作,并且可以在有访问保护的情况下发出读取/写入操作。
[0080]
在一些实施例中,读取/写入命令可以根据jedec存储器标准而从soc传输到存储器设备。例如,实现jedec标准可以包括通过jedec命令(cmd)和数据(data)总线传输读取/写入命令,其中命令操作码*(cmd opcode*)指定操作的类型(例如,读取、写入或列地址选通)。可以适配、修改、利用或以其他方式实施jedec标准,以包括指定安全域的访问控制id**。例如,表5至表7图示了根据jedec标准的读取命令,其中cas-3是新的附加jedec命令以包括指定安全域的访问控制id。读取、写入、cas-2、mrw-1和mrw-2(模式寄存器写入)是现有的jedec命令。
[0081]
表5
[0082]
命令csca0ca1ca2ca3ca4ca5ca6ck读取 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ2[0083]
表6
[0084]
命令csca0ca1ca2ca3ca4ca5ca6ckcas-2 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ2[0085]
表7
[0086]
命令csca0ca1ca2ca3ca4ca5ca6ckcas-3 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀ
id**id**id**id**2
[0087]
由soc对存储器设备的访问控制执行编码指令读取(read)、cas-2、cas-3的结果是从与cas-3命令中指定的安全域id相对应的存储器位置读取的32字节的数据。表5至表7仅图示了允许soc从存储器设备读取32字节的示例。可以执行写入命令以与读取命令类似的方式将32字节写入到与安全域id相对应的存储器位置(即,将jedec命令中的“读取”替换为“写入”)。
[0088]
在一些实施例中,jedec协议可以取决于包括soc和存储器设备的系统的应用来以各种格式被利用,以使得存储器设备可以是标准化的或应用特定的。例如,表8至表11图示了从存储器设备读取32字节数据的一系列命令。
[0089]
表8
[0090]
命令csca0ca1ca2ca3ca4ca5ca6ck写入 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ2[0091]
表9
[0092]
命令csca0ca1ca2ca3ca4ca5ca6ckcas-2 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ2[0093]
表10
[0094]
命令csca0ca1ca2ca3ca4ca5ca6ck读取 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ2[0095]
表11
[0096]
命令csca0ca1ca2ca3ca4ca5ca6ckcas-2 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ2[0097]
soc可以将指定安全域id的指令传输到存储器设备的访问控制。例如,soc可以传输包括1字节数据的32字节命令以指定安全域id,并且其中其他31字节被忽略、不相关或包含用于标识安全域以外的目的的信息。该指令可以在soc执行cas-2命令的同时,同步或基本同时地传输,以使得存储器设备的访问控制可以将写入(write)和cas-2命令与指定的安全域id相关联。如此,访问控制可以被配置为当通过一个总线接口接收到cas-2命令时特别地监测通过另一个总线接口对包括安全域id的指令的接收。例如,如参考图3所描述,访问控制硬件块130可以通过连接216d、216接收cas-2命令,并且可以通过连接304i接收安全域id。表8至表11仅图示了允许soc从存储器设备读取32字节的示例。可以执行写入命令以与读取命令类似的方式将32字节写入到与安全域id相对应的存储器位置(即,将jedec命令中的“读取”替换为“写入”)。为了减少开销,另外的操作模式是一旦访问控制硬件块130接收到安全域id,就可以成功接收与最近的安全域id相对应的后续读取或写入命令,而无需重
新发送新的安全域id。soc 140可以通过向ram 122发送全部属于相同安全域id的多个读取或写入事务来利用这个机会,例如访问控制硬件块130将保留当前安全域id并将其应用于后续的读取或写入事务,直到接收到新的安全域id。因此,捆绑具有相同id的事务可以消除表5、表6和表7中不必要的安全域id设置。
[0098]
表12至表14图示了实现jedec协议以指定(一个或多个)安全域id的另一个示例格式。
[0099]
表12
[0100][0101]
表13
[0102][0103][0104]
表14
[0105]
命令csca0ca1ca2ca3ca4ca5ca6ck读取 cmd*cmd*cmd*
ꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ2[0106]
表12至表14仅图示了允许soc从存储器设备读取32字节的示例。可以执行写入命令以与读取命令类似的方式将32字节写入到与安全域id相对应的存储器位置(即,将jedec命令中的“读取”替换为“写入”)。再一次,最近的安全域id可以保持激活状态,并且soc 140可以捆绑(发出连续的)读取或写入与相同安全域id相对应的事务,并减少表12和表13中花费的开销。
[0107]
再次参考图4,在块418中,soc可以实现新的访问控制策略、程序或者可能已经更新了存储器缓冲器分配,并且因此可能需要基于更新的soc存储器缓冲器分配来重新配置存储器设备访问控制。当确定soc存储器缓冲器分配已经被重新配置或更新时,可以重复块408至416中描述的过程以重新配置存储器设备的访问控制。利用未被反映到存储器设备访问控制的更新后的存储器实现soc将导致错误,并且因此需要重新配置存储器设备以针对soc侧的用例而适配到更新后的存储器分配。
[0108]
图5是图示了根据一些实施例的包括用于提供安全存储器内设备访问控制的数据和配置事务路径的示例计算系统500的组件框图。参考图1至图5,系统500可以包括cpu 104,其可以包括安全实体(例如,熔丝、信任区)502和hlos 504。系统500可以包括ram 122,该ram 122可以包括策略数据结构506。该系统可以包括各种硬件块和路径以实现配置模式事务和任务模式数据事务,其中两组事务通过相同的接口phy 124来进行中继。
[0109]
配置模式事务可以由phy 124中继到访问控制配置块132,其中路径508包括用于中继地址和数据信息的连接以及用于中继访问域信息的连接514i。通过路径508中继的数据可以包括基地址、尺寸或地址范围以及安全域id以配置访问控制配置块132从而准备任务模式数据事务。可以如参考方法400的块414(图4)描述的那样执行通过路径508中继的配置事务。
[0110]
任务模式数据事务可以由phy 124中继到策略实施块136,其中路径510包括中继地址和数据信息的连接以及中继接入域信息的连接512i。通过路径510中继的信息可以包括地址信息和数据以便读取或写入到ram单元阵列138内的特定位置。可以如参考方法400的块416(图4)所描述的那样执行通过路径510中继的任务模式数据事务。
[0111]
图6是图示了根据一些实施例的用于监测安全存储器内设备的访问违规的方法600的过程流程图。参考图1至图6,方法600的操作可以由soc(例如soc 140)的处理器(例如cpu 104、npu 308)和外部存储器设备(例如,ram 122)的访问控制硬件块(例如130)执行。
[0112]
在块602至620中执行的操作的顺序仅仅是示例性的,并且在一些实施例中可以以任何顺序并且部分同步地执行块602至620的操作。在一些实施例中,方法600可以由独立于外部存储器设备,但是与外部存储器设备相结合的设备的处理器来执行。例如,如所描述,方法600可以被实现为在soc的处理器内或在soc内的专用硬件中执行的软件模块,其发出命令以尝试访问外部存储器设备的存储器,并且以其他方式被配置为采取行动并存储数据。
[0113]
在块602中,存储器设备的访问控制可以由访问控制硬件块配置和使能。这可以如参考方法400的块402至414(图4)所描述的那样执行,使得soc配置存储器设备的访问控制硬件块的访问控制以允许soc从存储器设备单元阵列内的存储器读取和/或写入到存储器设备单元阵列内的存储器。
[0114]
在块604中,soc处理器可以将访问请求连同访问控制id一起发送到soc存储器控制器。例如,如参考图3所描述,cpu 104可以生成存储器访问请求以访问ram单元阵列138内的特定存储器。访问请求可以由cpu 104通过总线118传输到ram存储器控制器110。访问请求可以包括访问控制id(例如,安全域id)以标识cpu104是请求的来源。作为另一个示例,npu 308可以向ram存储器控制器110传输包括访问控制id的访问请求,其中npu 308的访问控制id与cpu 104的访问控制id不同。
[0115]
在块606中,soc存储器控制器可以响应于从soc处理器接收到访问请求而将包括访问控制id的读取/写入命令传输到存储器设备。这可以如参考方法400的块416(图4)所描述的那样执行。
[0116]
在块608中,访问控制硬件块可以将访问请求与访问控制配置进行比较。例如,如参考图3所描述,访问控制硬件块130内的策略实施块136可以从phy 124接收访问请求,并且基于在块602中配置的访问控制配置来确定包括读取/写入命令的访问请求是否可允许。访问控制硬件块130内的策略实施块136可以分析访问请求以确定基地址、地址范围和安全域id,然后将存储器信息和安全域id与存储器访问控制配置(例如,如由访问控制配置块132所定义的)进行比较。所标识的存储器位置和范围可以被用于标识ram存储器单元阵列138内的存储器信息。安全id可以标识对访问请求进行初始化的soc的安全域,以使得与所请求的安全域id相对应的安全域在已标识的存储器地址和范围内进行读取/写入操作。
[0117]
在确定块610中,存储器设备的访问控制硬件块130可以基于访问请求和访问控制配置来确定soc是否应该被授权访问存储器设备的存储器单元阵列。访问控制硬件块130可以被配置为基于特定安全域id和对应的存储器地址位置以及范围来允许(例如实现策略实施块136)对存储器单元阵列的访问请求,同时拒绝指定未被包括在存储器访问控制的配置中的其他安全域id的访问请求。
[0118]
例如,图7图示了根据一些实施例的用于提供安全存储器内设备访问控制的系统存储器映射700。对于这个示例,可以假设soc的cpu被归为0的安全域id,并且同一个soc的npu被归为1的安全域id。在存储器访问控制的配置期间,存储器设备可以接收包括与cpu和npu相对应的安全域id为0和1的配置消息。配置消息可以包括基于对应的安全域id而应该允许存储器设备访问的存储器地址位置和范围。例如,如方法400(图4)中所描述,存储器设备可能已经接收到配置消息以配置访问控制从而允许npu和cpu针对存储器地址范围704所请求的读取/写入操作,并允许cpu对存储器地址范围702的读取/写入操作,同时不允许npu对存储器地址范围702的读取/写入操作。作为另一个示例,访问控制可能已被配置为除了cpu之外允许对存储器地址范围进行读取操作,但不允许写入操作702,以使得除了包括npu安全域的cpu之外的所有其他安全域都不能写入到存储器地址范围702。因此,如果npu执行操作706以请求写入到存储器地址范围702,存储器设备的策略实施可以检查到该请求包括安全域id为1,确定只允许包括安全域id为0的请求写入到存储器地址范围702,并且可以拒绝该请求。
[0119]
再次参考图6,响应于基于访问控制配置确定不允许访问请求的存储器地址位置和范围以及安全域id(即,确定块610=“否”),那么可以不执行访问请求的读取/写入,可以记录包括访问请求信息的错误(例如,经由访问违规校正子块134),并且可以在块604中执行新的访问请求。
[0120]
响应于基于访问控制配置确定允许访问请求的存储器地址位置和范围以及安全域id(即,确定块610=“是”),那么可以在块612中执行访问请求的读取/写入。块608、610和612可以允许多个读取和/或写入事务继续进行,而不用在块604和606中重新发送访问控制id。如果是这样,则所有事务将被处理为属于已在块604和606中提供的当前安全域id,并且单独的读取或写入事务中的每一个将针对当前安全域id而被评估,并且分别被授权访问或被拒绝访问。
[0121]
在块614中,soc存储器控制器锁存响应数据并分析错误指示信号。例如,如参考图3所描述,在向策略实施块136发送访问请求期间,或在对ram单元阵列138进行读取/写入操作期间,可能已经发生了一个或多个错误。访问违规校正子可以记录任何错误,然后当soc发送命令请求以检索错误信息时通过连接304e和302e将错误信息发送到soc。然后ram存储器控制器110可以在读取/写入操作被执行之后锁存响应数据(例如,在连接120d处),并且可以检查连接302e以确定是否存在错误信号,该错误信号指示在访问请求和/或读取/写入操作期间是否发生任何错误。
[0122]
在确定块616中,soc可以基于从存储器设备接收到的错误信号来确定是否发生了错误。响应于确定没有错误发生(即,确定块410=“否”),可以向soc报告没有错误中断,并且可以根据块604执行新的访问请求。
[0123]
在块618中,响应于确定错误发生(即,确定块410=“是”),soc存储器控制器可以
从存储器设备请求错误信息。由访问违规校正子捕获到的错误信息可以被存储器设备传输到soc。
[0124]
在块620中,soc存储器控制器可以保存并本地存储错误信息,然后触发对soc主控制的中断以执行任何必要的操作来对访问和/或读取/写入错误进行记录和/或补救。
[0125]
图8是图示了根据一些实施例的用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的过程流程图。参考图1至图8,方法800的操作可以由与soc(例如,soc 140)的外部处理器(例如cpu 104、npu 308)电通信的存储器设备(例如ram 122)中的访问控制硬件块(例如130)执行。
[0126]
在块802至810中执行的操作的顺序仅仅是说明性的,并且在一些实施例中可以以任何顺序并且部分同步地执行块802至810的操作。在一些实施例中,方法800可以由独立于soc的外部处理器但与soc的外部处理器结合的存储器设备内的访问控制硬件块来执行。例如,方法800可以被实现为访问控制硬件块,该访问控制硬件块可以是存储器设备内的专用硬件,执行从soc的处理器接收到的存储器访问控制配置和任务模式命令。
[0127]
在块802中,访问控制硬件块可以执行操作,该操作包括接收来自soc的用于配置存储器设备的存储器访问控制的配置消息。在一些实施例中,配置消息可以包括配置安全域id,其被存储器设备的访问控制硬件块用来配置访问控制。在一些实施例中,配置消息可以是包括配置安全域id的经编码的jedec消息。
[0128]
在块804中,访问控制硬件块可以执行操作,该操作包括基于配置消息来配置存储器访问控制。
[0129]
在块806中,访问控制硬件块可以执行包括接收来自soc的访问请求消息的操作,该请求消息请求访问存储器设备的存储器单元阵列的存储器基地址和存储器访问范围。在一些实施例中,访问请求消息可以包括读取/写入操作。在一些实施例中,访问请求消息可以包括所请求的安全域id,其被用来标识soc的哪个安全域被请求读取/写入操作。在一些实施例中,访问请求消息可以是包括所请求的安全域id的经编码的jedec消息。
[0130]
在块808中,访问控制硬件块可以执行包括将访问请求消息与已配置的存储器访问控制进行比较以确定访问请求消息是否可允许的操作。
[0131]
在块810中,访问控制硬件块可以执行包括响应于确定访问请求消息可允许而允许读取/写入操作的操作。
[0132]
图9是图示了根据一些实施例的作为用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的一部分而可以由访问控制硬件块执行的替代操作的过程流程图。参考图1至图9,方法900的操作可以由与soc(例如,soc 140)的外部处理器(例如cpu 104、npu 308)电通信的存储器设备(例如ram 122)中的访问控制硬件块(例如130)执行。
[0133]
在执行方法800的块808(图8)的操作之后,存储器设备的访问控制硬件块可以执行包括在块902中确定配置安全域id是否与所请求的安全域id匹配的操作。这可以作为方法800的块808(图8)中描述的操作的一部分来执行。
[0134]
在块904中,访问控制硬件块可以执行包括响应于确定配置安全域id与所请求的安全域id匹配而确定访问请求消息可允许的操作。
[0135]
然后访问控制硬件块可以执行如所描述的方法800的块810(图8)的操作。
[0136]
图10是图示了根据一些实施例的作为用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的一部分而可以由存储器设备的访问控制硬件块执行的替代操作的过程流程图。参考图1至图10,方法1000的操作可以由与soc(例如,soc 140)的外部处理器(例如cpu 104、npu 308)电通信的存储器设备(例如ram 122)的访问控制硬件块(例如130)执行。
[0137]
在执行方法800的块808(图8)的操作之后,存储器设备的访问控制硬件块可以执行包括在块1002中响应于确定配置安全域id与所请求的安全域id不匹配而确定访问请求消息不可允许的操作。这可以作为方法800(图8)的块808中描述的过程的一部分来执行。
[0138]
在块1004中,访问控制硬件块可以执行包括存储错误信息的操作,该错误信息包括存储器基地址、存储器访问范围和所请求的安全域id。
[0139]
在块1006中,访问控制硬件块可以执行包括将错误信息传输到soc的操作。
[0140]
图11是图示了根据一些实施例的作为用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的一部分而可以由存储器设备的信任硬件块执行的替代操作的过程流程图。参考图1至图11,方法1100的操作可以由与soc(例如,soc 140)的外部处理器(例如cpu 104、npu 308)电通信的存储器设备(例如ram122)的信任硬件块(例如125)执行。
[0141]
在块1102中,存储器设备的信任硬件块可以执行包括接收来自soc的解锁密码的操作。
[0142]
在块1104中,信任硬件块可以包括确定接收到的解锁密码是否与存储在存储器设备中的可接受密码组内的密码匹配的操作。
[0143]
在块1106中,信任硬件块可以执行包括响应于确定接收到的解锁密码与可接受密码组内的密码匹配而解锁存储器设备门逻辑以允许访问控制硬件块接收配置消息的操作。
[0144]
然后访问控制硬件块可以执行如所描述的方法800的块802(图8)的操作。
[0145]
图12是图示了根据一些实施例的作为用于通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的方法800的一部分而可以由存储器设备执行的替代操作的过程流程图。参考图1至图12,方法1200的操作可以由与soc(例如,soc 140)的外部处理器(例如cpu 104、npu 308)电通信的存储器设备(例如ram 122)的访问控制硬件块(例如130)执行。
[0146]
在执行方法800的块804(图8)的操作之后,在块1202中存储器设备的访问控制硬件块可以执行包括从soc接收锁定命令的操作,该锁定命令被配置为在存储器设备的寄存器内设置锁定位。
[0147]
在块1204中,访问控制硬件块可以执行包括设置锁定位以防止已配置的存储器访问控制的配置改变的操作。
[0148]
访问控制硬件块然后可以执行如所描述的方法800的块806(图8)的操作。
[0149]
各种实施例可以在诸如可穿戴计算设备之类的各种计算设备内被实现。图13图示了根据一些实施例的智能手表1300形式的示例可穿戴计算设备。智能手表1300可以包括耦合到内部存储器1304和1306的处理器1302。内部存储器1304、1306可以是易失性存储器或非易失性存储器,并且也可以是安全存储器和/或加密存储器,或者是不安全存储器和/或未加密存储器或者其任何组合。处理器1302还可以耦合到触摸屏显示器1320,该触摸屏显示器1320诸如是电阻感应触摸屏、电容感应触摸屏、红外感应触摸屏等等。此外,智能手表
1300可以具有用于发送和接收电磁辐射的一个或多个天线1308,该天线可以连接到可以耦合到处理器1302的一个或多个无线数据链路1312,诸如一个或多个收发器、peanut收发器、wi-fi收发器、ant+收发器等。智能手表1300还可以包括用于接收用户输入的物理虚拟按钮1322和1310以及用于接收用户输入的滑动传感器1316。
[0150]
无线数据链路1312和连接的(一个或多个)收发器可以被用来与外部存储器设备电配对和通信,诸如耦合到响应无线收发器的ram/nvram。例如,如参考图3所描述,智能手表1300可以暂时与外部存储器设备(例如,ram 122)配对,以使得处理器(例如,cpu 104)可以配置存储器访问控制(例如,访问控制硬件块130)以准备发出命令从而访问存储器设备的存储器(例如,ram单元阵列138)。
[0151]
触摸屏显示器1320可以耦合到触摸屏接口模块,该触摸屏接口模块被配置为从触摸屏显示器1320接收信号,该信号指示屏幕上用户的指尖或手写笔正在触摸表面的位置,并且向处理器1302输出关于触摸事件的坐标的信息。此外,处理器1302可以配置有处理器可执行指令,以将触摸屏显示器1320上呈现的图像与从触摸屏界面模块接收到的触摸事件的位置相关联,以便检测用户何时已经与诸如虚拟按钮之类的图形界面图标进行了交互。
[0152]
处理器1302可以是任何可编程微处理器、微型计算机或一个或多个多处理器芯片,其可以由软件指令(应用)配置为执行包括各种实施例的功能的各种功能。在一些设备中,可以提供多个处理器,诸如一个专用于无线通信功能的处理器和一个专用于运行其他应用的处理器。通常,软件应用在它们被访问和加载到处理器1302中之前可以被存储在内部存储器中。处理器1302可以包括足够存储应用软件指令的内部存储器。在许多设备中,内部存储器可能是易失性或非易失性存储器,诸如闪存或者两者的混合。出于本说明的目的,对存储器的一般引用是指处理器1302可访问的存储器,包括内部存储器或插入到移动设备中的可移动存储器和处理器1302本身内的存储器。
[0153]
图14是根据一些实施例的可以通过片上系统(soc)提供对存储器设备的安全存储器内设备访问的网络计算设备1400的示例的组件框图。参考图1至图14,网络计算设备1400可以起到通信网络的网络元件(诸如基站)的作用。网络计算设备1400可以包括耦合到易失性存储器1402和大容量非易失性存储器1408(例如ram 122)的处理器1410(例如cpu 104、npu 308)。网络计算设备1400还可以包括外围存储器访问设备,诸如耦合到处理器1410的软盘驱动器、压缩盘(cd)或数字视频盘(dvd)驱动器1406。网络计算设备1400还可以包括网络访问端口1404(或接口),其耦合到处理器1410以用于建立与网络的数据连接,诸如耦合到其他系统计算机和服务器的互联网或局域网。网络计算设备1400可以包括一个或多个天线1404,该天线1404用于发送和接收可以连接到无线通信链路的电磁辐射。网络计算设备1400可以包括用于耦合到外围设备、外部存储器或其他设备的附加的访问端口,诸如usb、firewire、thunderbolt等。
[0154]
图15是适用于实现一些实施例的智能电话1500形式的示例无线设备的组件框图。参考图1至图15,智能电话1500可以包括耦合到第二soc 1502(诸如支持5g的soc)的第一soc 140(诸如soc-cpu)。第一和第二soc 140、1502可以耦合到内部存储器1516(例如,sram 106)、显示器1512和扬声器1514。此外,智能电话1500可以包括用于发送和接收电磁辐射的天线1504,该天线可以连接到无线数据链路或蜂窝电话收发器1508,其耦合到第一或第二soc 140、1502中的一个或多个处理器。例如,天线1504可以被用来电连接到外部存储器设
备(例如ram 122)和向外部存储器设备(例如ram 122)发出配置和任务模式存储器访问命令。智能电话1500通常还包括用于接收用户输入的菜单选择按钮或摇臂开关1520。
[0155]
典型的智能电话1500还包括声音编码/解码(codec)电路1510,其将从麦克风接收到的声音数字化为适合无线传输的数据分组,并且对接收到的声音数据分组进行解码以生成提供给扬声器的模拟信号以生成声音。而且,第一和第二soc 140、1502、无线收发器1508和codec 1510中的处理器中的一个或多个可以包括数字信号处理器(dsp)电路(未单独示出)。
[0156]
智能手表1300、无线网络计算设备1400和智能电话1500的处理器可以是任何可编程的微处理器、微型计算机或一个或多个多处理器芯片,其可以由处理器可执行指令配置以执行各种功能,包括本文所描述的各种实施例的功能。在一些无线设备中,可以提供多个处理器(诸如在soc 1502内的一个专用于无线通信功能的处理器以及在soc 140内的一个专用于运行其他应用的处理器)。通常,软件应用(例如,可信程序102、306)在它们被访问和加载到处理器中之前可以被存储在存储器1506、1516中。处理器可以包括足够存储应用软件指令的内部存储器。
[0157]
如在本技术中所使用,术语“组件”、“模块”、“系统”等等旨在包括与计算机相关的实体,诸如但不限于硬件、固件、硬件和软件的组合、软件或正在执行的软件,它们被配置为执行特定的操作或功能。例如,组件可以但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序或计算机。作为说明,在无线设备上运行的应用和无线设备两者可以被称为组件。一个或多个组件可以驻留在进程或执行线程内,并且组件可以位于一个处理器或核上或者分布在两个或多个处理器或核之间。此外,这些组件可以自其上存储有各种指令或数据结构的各种非暂时性计算机可读介质执行。组件可以通过本地或远程进程、函数或过程调用、电子信号、数据分组、存储器读取/写入和其他已知的网络、计算机、处理器或进程相关的通信方法来进行通信。
[0158]
所例示和描述的各种实施例仅作为示例而被提供,以例示权利要求的各种特征。然而,关于任何给定实施例示出和描述的特征不一定局限于关联的实施例,并且可以与示出和描述的其他实施例一起使用或进行组合。此外,权利要求不旨在受任何一个示例实施例的限制。例如,本文所公开的方法的操作中的一个或多个可以替代本文所公开的方法的一个或多个操作或与本文所公开的方法的一个或多个操作组合。
[0159]
前述方法说明和过程流程图仅作为例示性示例而被提供,并且不旨在要求或暗示各种实施例的块可以按呈现的顺序来执行。如本领域技术人员将了解的,前述实施例中的块的顺序可以以任何顺序来执行。诸如“此后”、“然后”、“接下来”等词语并非旨在限制块的顺序,这些词语只是被用来引导读者完成方法的说明。此外,例如使用冠词“一”、“一个”或“该”来以单数形式提及权利要求元素不应被解释为将元素限制为单数。
[0160]
如本文中所使用的,提及项目列表中的“至少一个”的短语是指那些项目的任何组合,包括单个成员。作为一个示例,“a、b或c中的至少一个”旨在涵盖a、b、c、a-b、a-c、b-c和a-b-c。
[0161]
结合本文所公开的实施例描述的各种示例性逻辑块、模块、电路和算法块可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地例示硬件和软件的这种可互换性,各种示例性组件、块、模块、电路和块已在上面就它们的功能进行了一般性描述。这种功能
性是作为硬件还是软件来实现取决于特定应用和强加在整个系统上的设计约束。技术人员可以针对每个特定应用以不同的方式实现所描述的功能性,但是这样的实施例决定不应被解释为导致偏离各种实施例的范围。
[0162]
用于实现结合本文所公开的各方面描述的各种示例性逻辑、逻辑块、模块和电路的硬件和数据处理装置可以利用被设计来执行本文所描述的功能的通用单芯片或多芯片处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或其任何组合来实现或执行。通用处理器可以是微处理器或任何常规处理器、控制器、微控制器或状态机。处理器也可以被实现为组合,诸如dsp和微处理器的组合、多个微处理器、一个或多个微处理器与dsp核心的组合或任何其他此类配置。在一些实施例中,特定过程和方法可以由特定于给定功能的电路来执行。
[0163]
在一个或多个方面,所描述的功能可以在硬件、数字电子电路、计算机软件、固件中实现,包括在本说明书中公开的结构及其结构等同物或其任何组合。本说明书中描述的主题的实施例也可以被实现为一个或多个计算机程序,即,计算机程序指令的一个或多个模块,其被编码在计算机存储介质上以供数据处理装置执行或控制数据处理装置的操作。
[0164]
用于在可编程处理器上执行计算机程序代码或“程序代码”以执行各种实施例的操作可以用高级编程语言来编写,诸如c、c++、c#、smalltalk、java、javascript、visual basic、结构化查询语言(例如transact-sql)、perl或其他各种编程语言。本技术中使用的存储在计算机可读存储介质上的程序代码可以指代处理器可理解的格式的机器语言代码(诸如目标代码)。
[0165]
如果以软件实现,则功能可以作为计算机可读介质上的一个或多个指令或代码而被存储或传输。本文所公开的方法或算法的过程可以在可以驻留在计算机可读介质上的处理器可执行软件模块中实现。计算机可读介质包括计算机存储介质和通信介质,通信介质包括可以能够将计算机程序从一个地方传送到另一个地方的任何介质。存储介质可以是可以由计算机访问的任何可用介质。作为示例而非限制,此类计算机可读介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁存储设备,或者可以被用来以指令或数据结构的形式存储所需程序代码,并且可由计算机访问的任何其他介质。此外,任何连接都可以适当地被称为计算机可读介质。本文所使用的磁盘和光盘包括压缩光盘(cd)、激光光盘、光学光盘、数字通用光盘(dvd)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上的组合也应被包括在计算机可读介质的范围内。此外,方法或算法的操作可以作为代码和指令中的一个或任何组合或集合而驻留在机器可读介质和计算机可读介质上,其可以被并入到计算机程序产品中。
[0166]
对本公开中描述的实施例的各种修改对于本领域技术人员而言是显而易见的,并且在不脱离权利要求的范围的情况下,本文所定义的一般原理可以被应用于其他实施例。因此,权利要求不旨在限于本文所示的实施例,而是应符合与本文所公开的本公开、原理和新颖特征相一致的最宽范围。