做网站能赚能去什么公司,百度可以建网站吗,wordpress怎么使用插件,为什么大公司开发网站在多核系统或复杂SoC#xff08;System on Chip#xff09;中#xff0c;不同处理器核心或IP#xff08;Intellectual Property#xff09;模块之间需要保持数据的一致性。常用的是ACE协议or CHI。 先对ACE协议进行学习
ACE协议#xff08;Advanced Microcontroller Bu…在多核系统或复杂SoCSystem on Chip中不同处理器核心或IPIntellectual Property模块之间需要保持数据的一致性。常用的是ACE协议or CHI。 先对ACE协议进行学习
ACE协议Advanced Microcontroller Bus Architecture Coherency Extension是一种高级的缓存一致性协议它允许系统中的主组件如处理器或其他设备判断缓存行是否是某个特定内存位置的唯一副本或者是否可能存在其他副本。根据这些信息主组件可以相应地采取不同的操作来维护数据的一致性。
①检查缓存行的唯一性当主组件想要修改一个缓存行时ACE协议首先通过监听机制来检查该缓存行是否是系统中的唯一副本。主组件的监听过滤器会与其他缓存进行通信以确定缓存行是唯一的还是共享的。 ②修改唯一缓存行如果确定缓存行是唯一的Unique状态包括UniqueClean和UniqueDirty主组件可以直接修改缓存行的值而无需通知系统中的其他主组件。这是因为没有其他副本需要更新或失效。 ③修改共享缓存行如果缓存行可能也存在于另一个缓存中Shared状态包括SharedClean和SharedDirty主组件必须启动一个适当的事务来通知其他缓存。这通常涉及到发送一个缓存一致性请求到其他缓存要求它们更新或失效对应的缓存行以确保系统中所有缓存的数据保持一致。 通过这种方式ACE协议确保了在多个主组件访问共享数据时数据的一致性和正确性得到维护。这对于多核处理器系统、SoCSystem on Chip或其他需要紧密协作的多主设备环境尤为重要。
1. cacheline状态 valid: 该cacheline在cache中存在
invalid:该cacheline在cache中不存在对该cacheline的访问需要去主存中或者其他cache中
unique:该cacheline只在这一个cache中存在因为core可以随意对它进行操作而无需担心一致性问题(因为在其他cache中就不存在)
shared:该cacheline存在于一个或多个cache中当cacheline处于shared状态下时core对它进行修改时需要确保其他cache中状态得到适当的更新以维护数据的一致性。
clean:表示缓存中的数据与主内存中的数据是一致的。缓存不承担更新主内存的责任。在这种情况下如果主组件读取缓存行它可以直接使用缓存中的数据而不需要从主内存中重新获取。(这个说法不太严谨clean不一定代表缓存中的数据与主内存一致比如shared clean只是不需要承担更新主存的责任而已~)
dirty:表示缓存中的数据已经被修改与主内存中的数据不一致。拥有脏缓存行的主组件必须确保最终将更新后的数据写回到主内存中以保持数据的一致性。
当一个core想要写入一个cacheline时它首先需要检查该cacheline的状态。如果是unique dirty的cachelie那么可以直接进行写操作。但如果是shared dirty的cachelinecore则需要通过发送一致性请求来通知其他cache确保它们能够更新或invalid对应的缓存行。这样的机制有助于避免数据冲突并确保所有处理器都能访问到最新和一致的数据。 2. cacheline状态转换规则
①获取新副本时必须通知其他cache
当一个cache获取一个cacheline的新副本时其他拥有该cacheline的cache必须被通知即使这些cache当前可能将该cacheline作为唯一状态持有它们也必须被通知将其更改为共享状态
②丢弃副本时无需通知其他cache
当一个cache准备丢弃一个cacheline时不需要通知其他也拥有相同cacheline的cache所以一个是shared状态的cacheline可能实际上只被一个cache所拥有
③相对于主内存更新
相对于主内存更新的cacheline必须处于dirty状态需要最终将更改写回主内存
④多个缓存中的更新缓存行
如果一个相对于主内存已经被更新的缓存行存在于多个缓存中那么它必须只在其中一个缓存中处于脏状态。这意味着虽然多个缓存可能拥有该缓存行的副本但只有一个缓存负责维护最新的数据并确保最终与主内存同步。 3. 通道信号增加 ACE协议在现有的AXI4通道的基础上进行了扩展并定义了专门的ACE通道以及确认信号以支持复杂的缓存一致性操作。以下是ACE协议中定义的通道和信号的概述
ACE协议在现有的AXI4通道上增加了一些新的信号以支持缓存一致性操作。这些信号包括
读取地址通道Read Address Channel
ARDOMAIN[1:0]由主设备提供用于指示读取事务的共享属性。 ARSNOOP[3:0]由主设备提供用于指定读取事务的监听类型。 ARBAR[1:0]由主设备提供用于指示读取事务是否需要遵守内存屏障memory barrier 写入地址通道Write Address Channel
AWDOMAIN[1:0]由主设备提供用于指示写入事务的共享属性。 AWSNOOP[2:0]由主设备提供用于指定写入事务的监听类型。 AWBAR[1:0]由主设备提供用于指示写入事务是否需要遵守内存屏障memory barrier。 AWUNIQUE此信号仅由支持WriteEvict事务的组件所需。WriteEvict事务用于从缓存中逐出数据而无需写回主内存。 4. ACE特定通道 ACE协议定义的这三个额外通道是为了增强缓存一致性管理和优化多处理器系统中的数据交互。下面是对这三个通道的详细解释
监听地址通道AC channel它提供了snoop transactions的地址和相关的控制信息。 通过这个通道缓存主设备可以接收来自系统总线或其他缓存的监听请求并根据请求中的地址信息确定是否拥有对应的缓存行。 监听响应通道CR channel它提供了对snoop transaction的响应。 监听数据通道CD channel这是一个可选的输出通道用于从主设备传递监听数据。 当发生读或清理监听事务时如果被监听的主设备拥有请求的数据副本那么这个通道就会被用来返回这些数据。
5.确认信号Acknowledge signaling ACE协议使用确认信号来表示一个事务已经被成功接收和处理。这些信号包括
读确认信号Read Acknowledge Signal - RACK
当主设备完成一次读事务时它会发出RACK信号。这个信号表明读操作已经成功完成并且数据已经从缓存或其他存储介质中读取出来准备供请求者使用。RACK信号通常在最后一个数据拍beat之后发出以指示整个读操作的结束。 写确认信号Write Acknowledge Signal - WACK
在完成写事务时主设备会发出WACK信号。这个信号表明写入操作已经成功完成并且数据已经被写入到指定的缓存行或存储位置中。与RACK类似WACK信号也通常在最后一个数据拍之后发出确认写操作的完成。