基于21554的无主多处理器系统实现

   2023-09-13 互联网2380
核心提示:  本文给出了基于Intel-21554[1]非透明PCI总线桥的无主多处理器系统的一个具体系统实现。  1. 21554的Lookuptable基地址模式

  本文给出了基于Intel-21554[1]非透明PCI总线桥的无主多处理器系统的一个具体系统实现。

  1. 21554的Lookuptable基地址模式

  – 支持从Secondary→Primary的一个源Base对N个目标Translated Base-i的“一对多”地址映射。

  – 目标空间分成64 个相同页(Page),每个页采用独立基地址Translated Base。页面利用Chip Control 1 configuration register编程,页面大小P-size从256B到最大4MB变化,可以置为无效。地址空间总容量为:16KB到256MB。如果设置页面大小为“零”,这种模式被禁止。

  – 源Base位于Secondary配置空间UPStream Memory 2 BAR处。源处理器需要按页面总空间安排存储映射。

  – 64个Base32位页面基地址位于CSRs寄存器空间,共256个字节。

  – 在CSRs地址空间提供了Lookuptable Offset Address和Lookuptable Data(偏移地址:02F:02Ch)寄存器来实现对页面基地址Translated Base的间接配置访问。

  – 每个页面Translated Base的 bit[7:0]用于控制或者保留,bit-0有效位,bit-3为可预取控制。基地址由bit[31:8]决定,包括基地址和页内偏移两部份。64个地址通常由Primary接口写入。上行访问时,来自Secondary的基地址的低6位用作地址“索引”,页面基地址结合偏移地址形成目标地址。

  

  2. 地址映射模式

  如图1所示,每个Processor-i的地址空间M都被分为内部和外部两部分。对内部空间的访问都被指向本地主存,而对外部的访问都被推向PCI总线。

  假设:(Base-i-P,TranslatedBase-i-S)表示Processor-i从Primary到Secondary的下行基地址对;

  (Base-i-S,TranslatedBase-i,j-P,j=0,……N-1)表示Processor-i的上行基地址;

  2.1. 下行地址映射

  Bi属于Processor-i的内部地址空间,接受本地Processor-i的内部访问以及Processor-j,j≠i的外部访问,如图1所示。位于Secondary-i接口的下行目标基地址Translated-Base-i指向Bi,由Processor-i根据内部空间分配策略决定。位于Primary-i接口的下行源基地址Base-i-P作为Processor-j的寻址目标,同时考虑文2中B在地址空间②中映射的任意性,可选择把B映射到②的底部,由此基地址应该满足下式:

  Base-i-P = TranslatedBase-j,i -P= i ,j=0,……N-1 ......⑴

  其中:TranslatedBase-j,i-P是Processor-j的在Primary-j接口的第i个上行基地址

  2.2. 上行地址映射

  Bj,j=0,……N-1,j≠i,是属于Processor-i的N-1个外部地址空间,本地Processor-i对这些空间的访问都被推向PCI总线,从而实现对Processor-j, j=0,……N-1,j≠i的外部访问。只需要假设页面Page-i与存储子空间Bi之间满足:P-size=Bi,就可以实现N个上行地址空间。在Secondary-i接口的上行基地址Base-i-S作为B的源基地址指向Processor-i PCI存储空间B0……BN-1底部,由Processor-i的PCI地址分配策略决定,如图1中所示。B的容量为:B-size =N xP-size =N x Bi。

  位于Primary-i接口的上行目标基地址TranslatedBase-i,j-P,作为Processor-i的地址映射目标,根据底部映射原则有:

  TranslatedBase-i,j-P = j ,j=0,……N-1  ......⑵

  基地址:TranslatedBase-i,i-P,TranslatedBase-i,l-P,l =N,……63,被置为无效。

  图2给出了整个系统的地址映射关系,箭头所指为访问的方向,“■”所示的空间Bj,j=0,…N-1,j≠i表示来自于Processor-j推向PCI的外部访问,“▲”所示的空间Bi,i=0,…N-1,表示Processor-i的内部空间,能够接受外部Processor-j下行访问。任意一个Processor-i都有一个下行和N-1个上行地址空间,能够接受任意Processor-j,j≠i的下行访问。

  

  3. 基地址的映射过程

  假定B具有如下属性:

  Bi{空间容量,空间类型,映射位置约束,可预取性}

  ={ 2R-1,存储器,32位任意地址,可预取},i=0,……N-1,R是偏移地址的位数。

  涉及的基地址配置内容包括:

  – CSR寄存器空间在Primary和Secondary两个接口的地址映射;

  – 本地地址窗,也就是桥的下行地址空间映射;

  – N-1个上行地址空间映射。

  

  3.1. Processor-i的上行配置

  3.1.1. 设置Chip Control 1 Register

  Processor-i首先要为桥Bridge-i在PCI空间中分配4KB的CSRs存储空间。然后通过CSR地址空间的Chip control 1 Register设置LookupTable基地址的页面大小。Bit[11:8]用以设置页面容量P-size,当P-size=0时,LookupTable模式被禁止。Processor-I由此得出存储空间B的总容量为:N x P-size,而且:Bi= P-size,以及P-size所需的地址位数满足:P-size =2R-1。

  3.1.2. Processor-i的上行配置

  21554没有提供板卡编号,这要由软件根据唯一性原则设定,考虑CSR要在地址空间②中占据4KB空间,实际的板卡编号设定为:i=1,……N,科由此确定Bj ,j=1,……N,在Primary接口的基地址。

  1) 上行源基地址Base-i-S

  Processor-i根据空间分配策略,为桥Bridge-i在PCI存储空间中分配总容量为N x P-size 的上行存储空间,利用Type-0配置访问Secondary接口配置空间,在基地址寄存器Upstream Memery 2 BAR(Secondary offset:20h)中写入该存储空间B的基地址。

  2) 页面基地址Translated Base-i,j-P

  标准模式应该由Primary一侧的处理器完成,但是由于Primary一侧的基地址完全确定,所以可以直接由Processor-i从Secondary接口写入。

  上行 Lookup Table位于CSR空间中,Offset:[1FFh:100h],21554不支持对TranslatedBase的直接访问。通过在CSR地址空间中提供:

  Lookup Table 偏移地址寄存器(LUT-OFFSET),Secondary Byte offset:28h

  Lookup Table 数据寄存器(LUT-DATA),Secondary Byte offset: 2Fh:28h

  用以支持对Lookup Table Translated Base的间接访问。

  先将页面基地址j,j=1,……N,写入数据寄存器LUT-DATA,然后将页面偏移地址写入LUT-OFFSET,处理器就会起动对该地址的写入过程,完成对一个Translated Base-i,j-P的设置。

  每个LUT-DATA的Bit[3:0]也用于控制:Bit[0]:Validbit;Bit[2:1]:保留;Bit[3]:可预取位

  对应下行地址空间Bi的第i个Translated Base-i,i与Translated Base-i,j,j=N……64被编程为禁止。

  3.1.3. Processor-i的下行配置

  21554提供了下行基地址(BAR0,1,2,3以及64位U-BAR3)以及对应的Translated Base(XLAT_ Base),都需要设置寄存器(Setup)配合才能工作。因此必需选择合理的下行通道以及正确使用设置寄存器。

  设置寄存器的特点

  1) 除LookupTable基地址模式,所有基地址都通过Setup提供控制、基地址容量等参数。

  2) 的Bit[3:0]用于控制参数,可读写,即:Bit[0]-空间类型;Bit[2:1]:空间位置约束;Bit[3]:可预取性。而基地址寄存器的Bit[3:0]为只读,对于基地址BAR0,2,3,U-BAR3,Bit[0]是固定的。

  3) 除BAR2是通过在Chip control 1 Register 将页面容量设置为“0”达到禁止目的外,其它基地址模式都可以通过Setup的Bit[31]使能或者禁止,除了BAR0复位使能外,其它基地址都是复位“禁止”的。

  4) 32位基地址域为Bit[31:12],申报的地址空间因此最少为4KB,对于BAR1因为涉及I/O空间,所以提供了较宽的基地址域为Bit[31:6],所申报的地址空间最少64B。

  5) BAR0是Primary CSR和下行存储器0的基地址,对应的Setup所指空间包括4KB的CSR和可编程的存储器空间两部分,CSR地址空间总在所申请的存储空间的底部。同时CSR空间不能被禁止,也就是说即使Setup申报的地址空间为零,那么基地址也会指出4KB的地址空间。当设置寄存器的Bit[31:12]被置位全零时,对于一般基地址而言表示被禁止,从BAR读出为全零,但是从BAR0基地址域读出值却为7FFFFh。这表示BAR0的普通存储空间被禁止,但是CSR的4KB存储空间是可以映射的。因此:尽管实际不需要从Primary接口访问这个空间,在地址空间②中也必须考虑这4KB地址空间的安排。

  6) Setup基地址域的某一位为“1”,表示基地址寄存器中的相应位是可写的,通常要求Setup高位为“1”的位数从最高位到低位连续。根据“1”的个数就可以求得地址空间的容量,相应的基地址寄存器中写入的数值就是基地址。

  CSR和下行存储空间Bi的映射通道选择:

  除了CSR的4KB地址空间之外,所有基地址都是上电自动禁止的,因此只需要设置CSR和所需的下行存储器空间Bi。存储空间Bi在Primary一侧的下行地址映射可以在BAR0,1,2,3中选择,需要考虑:

  – 地址偏移

  在这种对称结构设计中,实际上只需要从Secondary接口访问CSR地址空间,但是因为在Primary接口上不能禁止CSR,所以也需要把CSR映射到Primary一侧地址空间的适当位置。按照文2给出的存储空间映射模型,简单的方式是把CSR映射到存储空间B的底部和顶部,而映射到底部最为合理。

  这样存储空间B在地址空间中就需要适度偏移,根据下面的选择:如果用BAR2作为下行基地址通道,申报的最小地址空间为4KB,这样只需要把存储空间B在地址空间②中偏移一个单位,就可以满足将CSR放在地址空间②底部的要求。于是存储空间Bi的上行基地址变为:

  Translated Base-i,j-P= i i=1,…..N。

  – 空间容量

  基地址BAR0,2,3所申请的存储空间最少为4KB,而LookupTable可以申请的最小空间是256B,因此与Lookup Table容量匹配的基地址模式有BAR1(64B)。

  – 位置约束

  BAR1只能被映射到系统地址空间底部1MB以内,再考虑CSR占用的底部地址空间,存储空间的容量和映射位置受到限制。

  – CSR空间

  虽然在Secondary一侧,CSR和存储器0可被分别映射,但是在Primary一侧只提供了一个基地址。如果采用BAR0在使用过程中就必须避开底部4KB地址空间,可能带来不便、甚至引起错误。

  因此选择BAR2,3比较合理,在本案中选择了BAR2,虽然要求下行存储空间Bi的页面地址大于4K,但这符合一般对地址窗的容量要求。

  所有的设置都通过Secondary接口进行,因此只能采用Secondary接口的偏移地址(Secondary byte offset),于是一个完整的设置过程包括:

  Setupi 、Basei、TranslatedBasei寄存器设置。上行基地址访问模式:Type-0配置访问。

  4. 地址映射的具体实现

  1) CSR 映射

  a) Primary CSR and Downstream Memory 0 Setup Register—— DM0SR

  DM0SR偏移地址:Secondary byte offset:AFh: Ach;DM0SR设置值:DM0SR= 0000,0000h

  于是:Bit[3:0]=000,非预取的存储空间0在系统空间中被禁止;

  b) Primary CSR and Downstream Memory 0 Base Register——CSR-p

  偏移地址:Secondary byte offset: 53:50h;CSR-p =0000,0000h 被映射到地址空间②的底部

  c) Secondary CSR Memory Base Address Registers——CSR-s

  偏移地址:Secondary byte offset: 13:10h

  CSR-s[31:12]=xxxxxh 由Processor-i决定在PCI地址空间中的映射。

  2) 下行地址窗Bi的映射

  a) Downstream Memory 2 Setup Registers¬¬¬ ——DM2SR

  偏移地址:Secondary byte offset: B7h:B4h,DM2SR=FFFF,F008h

  于是:Bit[31]=1,Downstream Memory 2被使能;

  Bit[3:0]=8,可预取、在32位地址空间任意映射,存储器空间;

  DM2SR[31:12]= F,FFFFh, 虽然表示申请4KB地址空间,但是本案中的实际容量由处理器根据由页面P-SIZE大小直接写入基地址寄存器中。

  b) Downstream Memory 2 Base Register——Base-i-p

  偏移地址:Secondary byte offset: 5Fh:5Ch,Processor-i地址窗Bi的源基地址为:Base-i-p [31:R] = i

  c) Downstream Memory 2 Translated Base Register——TranslatedBase-i -s

  偏移地址:Secondary byte offset: 9Fh:9Ch

  Processor-i地址窗Bi的目标基地址为:TranslatedBase-i -s [31:R]由处理器Processor-i决定映射到内部地址空间中。

  5. 结语

  实践证明,通过对现有采用21554非透明桥的局部处理器板卡初始化配置软件进行适当改造,同时结合本案所研制的独立的中央资源,完全能够实现基于共享总线的无主多处理器系统。


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅