cache分类

直接映射缓存(Direct mapped cache)

直接映射缓存将ROM里地址按照一定的映射关系固定映射到1个cache line。如下图所示:

比如对于1个64KB的ROM,现在有1个512字节的cache,cache line的size为64byte,共8个cache line,物理地址将按以下结构进行拆分

[15:9][8:6][5:0]
tagcache line indxeoffset

然后按照下面顺序进行数据操作

  1. 直接根据index判断当前对应的cache line。
  2. 将需要取数的地址tag同cache line的tag进行比较,判断数据是否命中。
  3. 如果没有命中,则刷新cache line的数据,否则直接返回数据。

直接映射的特点就是硬件结构简单,只需要根据地址即可快速判断出是否命中。但直接映射容易发生cache 颠簸(cache thrashing)的现象。

由于CPU程序的特定,大部分取值操作都发生在一段地址空间内,因此取值地址大概率会发生在同1cache line地址的映射区域内,对与上面的示例,当cpu在0x00fc和0x2fc之间反复取指令的时候,因为总是发生在cache line0,导致每次都没有命中,从而降低了cache效率。

全相联映射缓存(Full associative cache)

全相联映射情况下,每一个cache line都可以映射ROM内的任意一个块,示意图如下

比如对于同样1个64KB的ROM,现在有1个512字节的cache,cache line的size为64,共8个cache line,物理地址将按以下结构进行拆分

[15:6][5:0]
tagoffset

此时,tag的位宽将变为9bit。同样当CPU取数时,cache的操作如下:

  1. 将地址的tag同cache line存储的tag进行比对,遍历所有cache line的tag,判断是否命中。
  2. 如果没有命中,则更新某个cache line的内容,否则返回数据。

可以看出,全相联的情况下,灵活度很高,cache 利用率高,可以避免cache颠簸的发生,但同样存在以下缺点
需要存储的tag内容较多。当cache size较大时,会明显增大面积。
Cache控制器的复杂性增加,如果采用顺序查表的机制,查表延迟最多可达16个是时钟走起,采用并行查表,较多的比较器同样会增加面积以及恶化时序。因此适用于小缓存的cache。

组相联映射缓存(Set associative cache)

组相联通过多路直接映射的缓存同时工作来避免直接映射缓存带来的cache颠簸现象。示意图如下:

对比直接映射,cache分成两部分,分别为way0和way1,每个way采用直接映射,两个way相同index的cache line组成set。从set的角度看,它可以同时映射两个不同的块,从而避免了cache颠簸的现象。

同样对于1个64KB的ROM,现在有1个512字节的cache,cache line的size为64,共8个cache line,分成2个way,每个way4个cache line。物理地址将按以下结构进行拆分

[15:8][7:6][5:0]
tagset indxeoffset

当CPU访问数据时,cache控制器然以下方式进行缓存判断:

  1. 直接根据set index索引到对应的set。
  2. 在set内根据tag进行遍历,判断set内是否有命中,如果命中则到对应的cache line内进行取数,否则更新某个cache line。

组相联在全相联和直接映射直接做了平衡,兼具两者的优点。

UPF-Power Domain

Power Domains Why Do We Use Them?

Advanced low power designs look to reduce dynamic and/or leakage power by:
Creating sub regions of the design (power domains) that use advanced LP techniques
such as

  • Shut down
  • Multi voltage
  • DVFS, AVFS
  • Low Vdd standby
  • Well biasing

802.11 non-HT Phy

概述

non-HT作为WIFI的第一个OFDM物理层,第一次引入是在802.11a协议中,802.11a工作在5G,随后在802.11g中加入2.4g频段支持。

帧结构

non-HT的物理层帧格式如下:

主要包含Preable,SIGNAL以及DATA三部分。

PREAMBLE

Preamble详细格式如下图

前8us为STF,由频域为

以上的序列OFDM调制得到,由于频域插值效果为时域周期扩展,所以时序信号为4个重复的序列,加上16个CP,所以可以得到5个重复的的序列,2个组合得到10个重复序列。用于粗同步以及粗频偏估计。

后8us为LTF。包含两个重复的OFDM符号。用于精同步,以及小数频偏纠正以及信道估计。

SIGNAL

SIGANL部分紧随PREAMBLE部分之后,表示DATA部分的调制已经长度相关信息,接收端解出这些信息之后才能正确对DATA部分进行解调。SIGNAL部分由以下信息调制而来。

  1. RATE:定义调制方式以及编码效率。
  • LENGTH:指示当前帧携带的PSDU实际数据长度,单位为字节。
  • PARTY:前面所有信息的奇偶校验。
  • TAIL:卷积编码器尾bit。

以上所有bit数据经1/2的BCC编码之后,经OFDM调制之后,得到1个OFDM符号。处理过程同DATA部分。

DATA

DATA部分由SERVICE字段,实际的PSDU字段,TAIL,以及填充bit PAD经BCC编码,OFDM调制之后得到。

  1. SERVICE:16bit,用于解扰模块的初始化。
  • PSDU:MAC层来的数据。
  • TAIL:卷据编码器的尾bit,用于归零译码器。
  • PAD:由于需要发送的bit数量不一定能刚好填充完所有的OFDM符号,因此需要在数据尾部填0。填0的数量向上取整计算能够需要的OFDM符号。然后减去实际发送的BIT数量。最终得到需要PAD的BIT数量。