划分了软件以及硬件的合作分工,那它们之间怎么通信呢?我们常想到的是寄存器,是分组排列的,硬件内部可直接访问的一些存储单元。不过寄存器存储起来比较费空间,一般而言4K byte的空间已经是非常多了。因为超过1Kbit时就应该用RAM替换寄存器以节省空间。
不过寄存器的访问比起SRAM的访问还是更简单的。寄存器对HW来讲是不用寻址的,只是对于SW来说需要寻址。
但如果使用SRAM替换,那么SW以及HW都需要进行寻址才能访问。
HW寻址SRAM需要预先知道存储的位置(寻址),然后取数,其不适合并行的数据读取,一般用作批量数据的存储和读取之用。并且SRAM还涉及到对端口的共享控制问题,因此不适合需要有多种访问实体的数据存储。
但对大批量的数据,访问实体单一的情况,SRAM是比较适合的。
如以下这张表,800 BITS的空间占用,但是却不是使用Registers,而是使用SRAM。
可以看到,表中的内容并非批量的数据,其读取方式是先取部分的内容,即ADDR,ID,INDEX等。
然后按照需要去读取CIPHER(PROTECTED FRAME),BA(ACK POLICY), DATAPENDING BUF(MORE DATA),以上构成了FRAME CONTROL的内容。
另外还有TXVECTOR(PHY SETTING)的部分。
以及一些QOS CONTROL的内容,如RTS THRESHOLD。
除此之外,此表以STA INDEX作为一个KEY的作用,链接到另外的表,如TX AMSDU LUT以及TX AMPDU LUT。
显然,无论从节省存储空间,以及便利数据读取的角度,这都不适合以LUT(SRAM)的形式存储,而是更适合Register的方式来存储。