tag 标签: powerpc

相关博文
  • 热度 21
    2013-8-23 15:57
    1985 次阅读|
    0 个评论
    PowerPC处理器使用OpenPIC中断控制器或者MPIC中断控制器,处理外部中断请求。其中MPIC中断控制器基于OpenPIC中断控制器,但是作出了许多增强,目前Freescale新推出的PowerPC处理器,其中断控制器多与MPIC兼容。 值得注意的是,PowerPC处理器和x86处理器处理MSI报文的方式有较大的不同。其中x86处理器使用的机制比PowerPC处理器更为合理,但是PowerPC处理器使用的方法使用的硬件资源相对较少。本节将MPC8572处理器为例说明MSI机制的处理过程,在第6.3节介绍x86处理器如何实现MSI机制。 MPIC中断控制器是Freescale的PowerPC处理器使用的通用中断控制器,目前基于E500内核的处理器,如MPC854x、8572等处理器使用这种中断控制器。目前Freescale使用QorIP架构,该架构使用的中断控制器与MPIC兼容。 使用MPIC中断控制器处理MSI中断时,PCIe设备的MSI报文,其目的地址为MPIC中断控制器的MSIIR寄存器。当该寄存器被PCIe设备写入后,MPIC中断控制器将向处理器内核提交中断请求,之后处理器再通过读取MPIC中断控制器的ACK寄存器获得中断向量号,并进行相应的中断处理。这种方式与x86处理器的FSB Interrupt Message机制相比,处理器需要读取ACK寄存器,从而中断处理的延时较大。 目前Freescale的P4080处理器对MPIC中断控制器进行了优化。在P4080处理器中,MPIC中断控制器向处理器提交中断请求的同时,也向处理器内核提交中断向量,处理器内核不必读取ACK寄存器获得中断向量,从而缩短了中断处理延时。使用这种方法的效率与x86处理器使用的FSB Interrupt Message机制相当。 目前Freescale并没有完全公开P4080处理器的实现细节,因此本节仍以MPC8572处理器为例介绍PCIe设备的MSI中断请求。在MPC8572处理器中,MPIC中断控制器的拓扑结构如图6‑5所示。 由上图所示,MPIC中断控制器可以处理内部中断请求 、外部中断请求,Message、处理器间中断请求和Share MSI中断请求等。而MPIC中断控制器使用Int0、Int1等中断线向处理器提交这些中断请求。其中Internal Interrupts和External Interrupts模块处理MPC8572内部和外部的中断请求,而Share MSI处理来自PCIe设备的MSI或者MSI-X中断请求。 当MPIC中断控制器收到MSI报文后,将使用中断线Int0、Int1或者cintn向处理器内核提交中断请求。处理器内核被中断后,将读取ACK寄存器获得中断向量,然后执行相应的中断服务例程。为此PowerPC处理器设置了一系列寄存器,如下文所示。 6.2.1 MSI中断机制使用的寄存器 PowerPC处理器设置了一系列寄存器,处理来自PCIe设备的MSI报文,其中最重要的寄存器是MSIIR寄存器。在PowerPC处理器系统中,PCIe设备Message Address寄存器中存放的值都为MSIIR寄存器的物理地址,而Message Data寄存器中存放的数据也与MSIIR寄存器相关。 在PowerPC处理器系统中,MSI机制的实现过程是PCIe设备向MSIIR寄存器写入指定的数据。MPIC中断控制器发现该寄存器被写入后,将向处理器提交中断请求。处理器收到这个中断请求后,将通过读取MPIC中断控制器的ACK寄存器确定中断向量,并依此确定中断源。为此PowerPC处理器还设置了其他寄存器实现MSI中断机制。 1 MSIIR寄存器 在PowerPC处理器中,MSIIR(Shared Message Signaled Interrupt Index Register)寄存器是实现MSI机制的重要寄存器。 当PCIe设备对MSIIR寄存器进行写操作时,MPC8572处理器将使能MSIR0–MSIR7寄存器的相应位,从而向MPIC中断控制器提交中断请求,而中断控制器将转发这个中断请求,由处理器进一步处理。该寄存器各字段的详细描述如表6‑3所示。  表6‑3 MSIIR寄存器 Bits 定义 描述 27~31 IBS 该字段用来选择MSIR0~MSIR7寄存器的对应位。0b00000对应SH0;0b00001对应SH1;0b00010对应SH2;以此类推0b11111对应SH31; 24~26 SRS 该字段用来选择MSIR0~MSIR7寄存器。0b000对应MSIR0;0b001对应MSIR1;0b010对应MSIR2;以此类推0b111对应MSIR7。 0~24   保留。     PCIe设备通过MSI机制,向此寄存器写入数据时,MSIR0~7寄存器的相应位SH0~31将有一位置1。例如PCIe设备向MSIIR寄存器写入0xFF00000时,MSIR7寄存器的SH31位将置1(SRS字段为0b111用来选择MSIR7,而IBS字段为0b11111用来选择SH31)。 2 MSIR寄存器组 MSIR(Shared Message Signaled Interrupt Registers)寄存器组共由8个寄存器组成,分别为MSIR0~MSIR7。其中每一个MSIRx寄存器中有32个有效位,分别为SH0~31。当PCIe设备对MSIIR寄存器进行写操作时,某一个MSIIRx寄存器的某个SH位将被置为有效。系统软件通过读取该寄存器获得中断源,该寄存器读清除,对此寄存器进行写操作没有意义。 该寄存器组的大小决定了一个PowerPC处理器支持的MSI中断请求的个数。在MPC8572处理器中,有8个MSIRx寄存器,每个寄存器由32个有效位组成,因此MPC8572处理器最多能够处理256个MSI中断请求。该寄存器的结构如图6‑6所示。 3 MSISR寄存器 MSISR寄存器(Shared Message Signaled Interrupt Status Register)共由8个有效位组成,每一位对应一个MSIR寄存器。MPC8572处理器设置该寄存器的主要目的是方便系统软件定位究竟是哪个MSIR寄存器中存在有效的中断请求。首先系统软件通过MSISR寄存器判断是哪个MSIRx寄存器存在有效请求,之后再读取相应的MSIRx寄存器,该寄存器各字段的详细描述如表6‑4所示。  表6‑4 MSISR寄存器 Bits 定义 描述 0~23   保留。 24~31 Sn 该字段由8位组成,每一位与一个MSIR0~7寄存器对应。该位为0时表示在MSIRn寄存器中没有有效位,即没有中断请求;该位为1时表示MSIRn寄存器中至少有一个有效位,即存在中断请求。Sn位是MSIRn寄存器各个位的“与”,当MSIRn寄存器的相应位清除时,Sn也将被清除。     4 MSIVPR寄存器组 MSIVPR(Shared Message Signaled Interrupt Vector/Priority Register)寄存器组由8个寄存器组成,分别为MSIVPR0~7寄存器。该组寄存器设置对应中断请求的优先级别和中断向量。其中每个MSIVPR寄存器对应一个MSIR寄存器,MSIVPR寄存器各字段的详细解释如表6‑5所示。  表6‑5 MSIVPR寄存器 Bits 定义 描述 0 MSK 该位为0,且MSIR寄存器的对应位为1时,则将向中断控制器提交中断请求;如果为1屏蔽该中断请求。 1 A 该位为0时,表示MPIC中断控制器没有处理该中断请求;该位为1时,表示MPIC中断控制器正在处理该中断请求,或者该中断控制器准备处理该中断请求,这个中断请求将在IPR(Interrupt Pending Regsiter)寄存器中排队等待处理,或者在ISR(Interrupt Service Register)寄存器中正在被处理。该位的详细描述见MPC8572的数据手册。 12~15 PRIORITY OpenPIC和MPIC中断控制器中为每一个中断请求设置了0~15,共16个优先级。其中1的优先权最低,15的优先权最高,0表示禁止中断请求。 16~31 VECTOR 该字段存放该中断的中断向量。当处理器读取IACK寄存器时,将获得对应中断请求的中断向量。     通过该组寄存器可以发现,在MPC8572处理器系统中,PCIe设备最多可以使用8个中断向量,并可以共享这些中断向量。 5 MSIDR寄存器组 MSIDR(Shared Message Signaled Interrupt Destination Registers)寄存器组共由8个寄存器组成,分别为MSIDR0~7。其中每一个MSIDRn寄存器对应一个MSIR寄存器。 MPIC中断控制器支持Pass-through方式,在这种方式下,PowerPC处理器可以使用外部中断控制器处理中断请求(这种方法极少使用),而不使用内部中断控制器。MPIC中断控制器可以使用cint#和int#信号提交中断请求,但是绝大多数系统软件都使用int#信号向处理器提交中断请求。 此外在MPC8572处理器中有两个CPU,分别为CPU0和CPU1,MSI机制提交的中断请求可以由CPU0或者CPU1处理。系统软件可以通过设置MSIDRn寄存器完成这些功能,该寄存器各字段的详细描述如表6‑6所示。  表6‑6 MSIDRn寄存器 Bits 定义 描述 0 EP 为1时,表示中断请求输出到IRQ_OUT由外部中断控制器处理;为0时,表示由MPIC中断控制器处理。 1 CI0 为1时,表示中断控制器使用cint#信号向CPU0提交中断请求。 2 CI1 为1时,表示中断控制器使用cint#信号向CPU1提交中断请求。 30 P1 为1时,表示中断控制器使用int#信号向CPU0提交中断请求。 31 P0 为1时,表示中断控制器使用int#信号向CPU1提交中断请求。     6.2.2 系统软件如何初始化PCIe设备的MSI Capability结构 如果PCIe设备支持MSI机制,系统软件首先设置该设备MSI Capability结构的Message Address和Message Data字段。如果该PCIe设备支持64位地址空间,即MSI Capability寄存器的64 bit Address Capable位有效时,系统软件还需要设置Message Upper Address字段。系统软件完成这些设置后,将置MSI Cabalibities结构的MSI Enable位有效,使能该PCIe设备的MSI机制。 其中Message Address字段所填写的值是MSIIR寄存器在PCI总线域中的物理地址。在PowerPC处理器中,PCI总线域与存储器域地址空间独立,当PCIe设备访问存储器域的地址空间时,需要通过Inbound寄存器组将PCI总线域地址空间转换为存储器域地址空间。 在PowerPC处理器中,PCIe设备使用MSI机制访问MSIIR寄存器时,可以不使用Inbound寄存器组进行PCI总线地址到处理器地址的转换。在MPC8572处理器中,专门设置了一个PEXCSRBAR窗口 ,进行PCI总线域到存储器域的地址转换,使用这种方法可以节省Inbound寄存器窗口,Linux PowerPC使用了这种实现方式。 在MPC8572处理器中,MSIIR寄存器的基地址为CCSRBAR (Configuration, Control, and Status Base Address Register),其偏移为0x1740。为支持MSI中断机制,系统软件需要使用PEXCSRBAR窗口将MSIIR寄存器映射到PCI总线域地址空间,即将CCSRBAR寄存器空间映射到PCI总线域地址空间。之后PCIe设备就可以通过MSIIR寄存器在PCI总线域的地址访问MSIIR寄存器。 Linux PowerPC使用setup_pci_pcsrbar函数 设置PEXCSRBAR窗口,该函数的源代码在./arch/powerpc/sysdev/fsl_pci.c文件中,如源代码6‑1所示,这段代码来自Linux 2.6.30.5。  源代码6‑1 setup_pci_pcsrbar函数 static void __init setup_pci_pcsrbar(struct pci_controller *hose) { #ifdef CONFIG_PCI_MSI     phys_addr_t immr_base;       immr_base = get_immrbase();     early_write_config_dword(hose, 0, 0, PCI_BASE_ADDRESS_0, immr_base); #endif }   系统软件除了需要设置PCIe设备的Message Address字段和PEXCSRBAR窗口之外,还需要设置PCIe设备的Message Data字段。PCIe设备向MSIIR寄存器进行存储器写操作的数据存放在Message Data字段中。 系统软件在初始化Message Data字段之前,首先根据Multiple Message Capable字段预先存放的数据初始化Multiple Message Enable字段。一个PCIe设备最多可以申请32个中断请求,但是系统软件根据当前处理器系统的中断资源的使用情况,决定给这个PCIe设备提供多少个中断向量,并将这个结果存放到Multiple Message Enable字段。 MPC8572处理器最多可以为PCIe设备提供256个MSI中断请求。但是在某些极端的情况下,可能会出现PCIe设备需要的中断请求超过系统所能提供的中断请求。此时某些PCIe设备的Multiple Message Enable字段可能会小于Multiple Message Capable字段。 如果在PCIe设备中,使用了多个中断请求,那么Message Data字段存放的是一组中断向量号,而Message Data字段存放这组中断向量号的基地址。MSI机制要求“这组数据”连续,其范围在Message Data~Message Data+Multiple Message Enable-1之间。在多数情况下,MPC8572处理器系统仅为一个PCIe设备分配1个中断向量号。 由上所述,在MPC8572处理器系统中,PCIe设备使用存储器写TLP传送MSI中断报文,这个存储器写TLP使用的地址为PCIe设备Capability结构的Message Address字段,而数据为Message Data~Message Data+Multiple Message Enable-1之间。其中Message Data字段与MSIIR寄存器要求的格式相同。 这个特殊的存储器写TLP报文通过若干Switch,并穿越RC后,最终将数据写入MSIIR寄存器中,并设置MSIIR寄存器的SRS和IBS字段,同时将使能MSIR0~MSIR7寄存器的相应位,从而向中断控制器提交中断请求(如果MSIVPR寄存器的MSK位为1)。MPIC中断控制器获得该中断请求后,向处理器系统转发这个中断请求,并由处理器系统执行相应的中断服务例程进行中断处理。MPC8572处理器也可以处理PCIe设备的MSI-X中断机制,本节对此不做进一步介绍。 PowerPC处理器中含有许多模块,如千兆以太网、ATM等,这些模块包含在芯片内部,由这些内部模块发起的中断请求,被称为内部中断请求。 该窗口的大小为1MB,其基地址由PEXCSRBAR寄存器确定。 在Linux PowerPC中使用immr_base变量保存该寄存器。IMMR寄存器是PQ2处理器使用的寄存器,该寄存器在PQ3之后的处理器中升级为CCSRBAR。 该函数来自Linux 2.6.30.5内核。    
  • 热度 19
    2013-4-19 17:50
    1268 次阅读|
    0 个评论
    在x86处理器和PowerPC处理器中,PCI设备对“不可Cache的存储器空间”进行DMA读写的过程并不相同。其中PowerPC处理器对“不可Cache的存储器空间”进行DMA读写进行了专门的处理,而x86处理器在对这类空间操作时,效率相对较低。 1 x86处理器 x86处理器使用MTRR(Memory Type Range Register)寄存器设置存储器空间的属性,如果存储器空间为“可Cache空间”,x86处理器还可以进一步设置这段空间为“Write Through”、“Write Combining”、“Write Protect”和“Write Back”。但是这些设置与PCI设备进行DMA操作时,是否进行Cache一致性操作并没有直接关系。 在x86处理器系统中,一个PCI设备进行DMA写操作,可以将数据从PCI设备写入到主存储器中。这个数据首先需要通过HOST主桥,然后经过FSB发送到存储器控制器。虽然在x86处理器系统中,CPU知道这个存储器区域是否为“可Cache的”,但是HOST主桥并不知道PCI设备访问的存储器地址是否为“可Cache的”,因此都需要使用“Cache一致”的FSB总线传送事务 进行存储器写操作,从而数据在发向FSB时,CPU必须要进行总线监听,通知FSB总线这段空间是“不可Cache的”。 在x86处理器中,PCI设备向不可Cache的存储器空间进行读操作时,CPU也必须进行Cache共享一致性操作,而这种没有必要的Cache共享一致性操作将影响PCI总线的传送效率。当PCI设备所访问的存储器空间没有在CPU的Cache命中时,CPU会通知FSB,数据没有在Cache中命中,此时PCI设备访问的数据将从存储器中直接读出。 x86处理器在前端总线上进行Cache共享一致性操作时,需要使用Snoop Phase,如果PCI设备能事先得知所访问的存储器是“不可Cache的”,就可以不在前端总线上进行Cache共享一致性操作,即FSB总线事务可以不包含Snoop Phase,从而可以提高前端总线的使用效率。但是x86处理器并不支持这种方式。 在x86处理器系统中,无论PCI设备访问的存储器空间是否为“不可Cache的”,都需要进行Cache共享一致性操作。这也是PCI总线在x86处理器使用中的一个问题。而PCIe总线通过在数据报文中设置“Snooping”位解决了这个问题,有关PCIe总线Snooping位的内容参见第6.1.3节。 2 PowerPC处理器 在MPC8548处理器中,HOST主桥可以通过PIWARn寄存器 的RTT字段和WTT字段预知PCI设备访问的存储器空间是否为可Cache空间。当HOST主桥访问“不可Cache空间时”,可以使用FSB总线的“不进行Cache一致性”的总线事务。 此时PowerPC处理器不会在FSB总线中进行Cache一致性操作,即忽略FSB总线事务的Snoop Phase。PCI设备进行DMA写时,数据将直接进入主存储器,而PCI设备进行DMA读所读取的数据将直接从主存储器获得。与x86处理器相比,PowerPC处理器可以忽略CPU进行总线监听的动作,从而提高了FSB传送效率。 FSB总线定义了许多总线事务,有的FSB总线提供了一个Snoop信号,该信号为1时表示当前FSB的总线事务需要进行Cache共享一致性,为0时不需要进行Cache共享一致性。 该寄存器在Inbound寄存器组中,详见第2.2.3节。
  • 热度 25
    2013-4-17 14:01
    1267 次阅读|
    0 个评论
    PCI总线规范定义了一系列与Cache相关的总线事务,以提高PCI设备与主存储器进行数据交换的效率,即DMA读写的效率。当PCI设备使用DMA方式向存储器进行读写操作时,一定需要经过HOST主桥,而HOST主桥通过FSB总线 向存储器控制器进行读写操作时,需要进行Cache共享一致性操作。 PCI设备与主存储器进行的Cache共享一致性增加了HOST主桥的设计复杂度。在高性能处理器中Cache状态机的转换模型十分复杂。而HOST主桥是FSB上的一个设备,需要按照FSB规定的协议处理这个Cache一致性,而多级Cache的一致性和状态转换模型一直是高性能处理器设计中的难点。 不同的HOST主桥处理PCI设备进行的DMA操作时,使用的Cache一致性的方法并不相同。因为Cache一致性操作不仅与HOST主桥的设计相关,而且主要与处理器和Cache Memory系统设计密切相关。 PowerPC和x86处理器可以对PCI设备所访问的存储器进行设置,其设置方法并不相同。其中PowerPC处理器,如MPC8548处理器,可以使用Inbound寄存器的RTT字段和WTT字段,设置在PCI设备进行DMA操作时,是否需要进行Cache一致性操作,是否可以将数据直接写入Cache中。RTT字段和WTT字段的详细说明见第2.2.3节。 而x86处理器可以使用MTRR(Memory Type Range Registers)设置物理存储器区间的属性,是否为可Cache空间。下文分别讨论在PowerPC与x86处理器中,PCI设备进行DMA写操作时,如何进行Cache一致性操作。 但是与PowerPC处理器相比,x86处理器在处理PCI设备的Cache一致性上略有不足,特别是网络设备与存储器系统进行数据交换的效率。因为x86处理器所重点优化的是PCIe设备,目前x86处理器使用的IOAT(I/O Acceleration Technology)技术,极大增强了PCIe设备与主存储器进行数据通信的效率,但是这种技术仍然不能与一些Data Plane处理器,如XLP832,P4080处理器优化I/O访问的技术相提并论。毕竟x86处理器所适用的领域依然是PC、服务器等计算和控制领域,并不是Data Plane处理器领域。
  • 热度 14
    2013-3-28 10:11
    1680 次阅读|
    0 个评论
    3 使用Outbound寄存器访问PCI总线地址空间 MPC8548处理器使用Outbound寄存器组访问PCI总线地址空间的步骤如下。 (1) 首先MPC8548处理器需要将程序使用的32位有效地址EA (Effective Address)转换为41位的虚拟地址VA (Virtual Address)。E500 V2内核不能关闭MMU(Memory Management Unit),因此不能直接访问物理地址。 (2) MPC8548处理器通过MMU将41位的虚拟地址转换为36位的物理地址。在E500 V2内核中,物理地址是36位(缺省是32位,需要使能)。 (3) 检查LAWBAR和LAWAR寄存器,判断当前36位的物理地址是否属于PCI总线空间。在MPC8548中定义了一组LAWBAR和LAWAR寄存器对,每一对寄存器描述当前物理空间是与PCI总线、PCIe总线、DDR还是RapidIO空间对应。该组寄存器的详细说明见MPC8548 PowerQUICC III™ Integrated Host Processor Family Reference Manual。如果CPU访问的空间为PCI总线空间,则执行第(4)步,否则处理器将不会访问PCI地址空间。 (4) 判断当前36 位物理地址是否在POWBARn寄存器1~4描述的窗口中,如果在则将36位的处理器物理地址通过寄存器POTARn和POTEARn转换为64位的PCI总线地址,然后HOST主桥将来自处理器的读写请求发送到PCI总线上;如果不在POWBARn寄存器1~4描述的窗口中,POWBAR0寄存器作为缺省窗口,接管这个存储器访问,并使用寄存器POTAR0和POTEAR0,将处理器物理地址转换为PCI总线地址,当然在正常设计中很少出现这种情况。 许多系统软件,将Outbound窗口两边的寄存器使用“直接相等”的方法进行映射,将存储器域的地址与PCI总线地址设为相同的值。但是系统软件程序员务必注意这个存储器地址与PCI总线地址是分属于存储器域与PCI总线域的,这两个值虽然相等,但是所代表的地址并不相同,一个属于存储器域,而另一个属于PCI总线域。 2.2.3 PCI 总线域地址空间到存储器域地址空间的转换 MPC8548处理器使用Inbound寄存器组将PCI总线域地址转换为存储器域的地址。PCI设备进行DMA读写时,只有访问的地址在Inbound窗口中时,HOST主桥才能接收这些读写请求,并将其转发到存储器控制器。MPC8548处理器提供了3组Inbound寄存器,即提供3个Inbound寄存器窗口,实现PCI总线地址到存储器地址的反向映射。 从PCI设备的角度上看,PCI设备访问存储器域的地址空间时,首先需要通过Inbound窗口将PCI总线地址转换为存储器域的地址;而从处理器的角度上看,处理器必须要将存储器地址通过Inbound寄存器组反向映射为PCI总线地址空间,才能被PCI设备访问。 PCI设备只能使用PCI总线地址访问PCI总线域的地址空间。HOST主桥将这段地址空间通过Inbound窗口转换为存储器域的地址之后,PCI设备才能访问存储器域地址空间。这个地址转换过程如图2‑5所示。 在介绍MPC8548处理器如何使用Inbound寄存器组进行PCI总线域地址空间到存储器域地址空间的转换之前,我们首先简要介绍Inbound寄存器组中的相应寄存器。该组寄存器的地址偏移、属性和复位值如表2‑3所示。 表 2‑3 PCI/X ATMU Inbound寄存器组 Offset 寄存器名 属性 复位值 0x0_8DA0/C0/E0 PITARn 可读写 0x0000-0000 0x0_8DA8/C8/E8 PIWBARn 可读写 0x0000-0000 0x0_8DAC/CC PIWBEARn 可读写 0x0000-0000 0x0_8DB0/D0/F0 PIWARn 可读写 0x0000-0000 值得注意的是,Inbound寄存器组除了可以进行PCI总线地址空间到存储器域地址空间的转换之外,还可以转换分属不同PCI总线域的地址空间,以支持PCI总线的Peer-to-Peer数据传送方式。 1 PITARn寄存器 PITARn寄存器保存当前Inbound窗口在存储器域中的36位地址空间的基地址,其地址窗口的大小至少为4KB,因此在该寄存器中仅存放存储器域地址的第0~23位,该寄存器的其主要字段如下所示。 TEA字段存放存储器地址空间的第0~3位。 TA字段存放存储器地址空间的第4~23位。 2 PIWBARn和PIWBEARn寄存器 PIWBARn和PIWBEARn寄存器保存当前Inbound窗口在PCI总线域中的64位地址空间的基地址的第63~12位,Inbound窗口使用的最小地址空间为4KB,因此在这两个寄存器中不含有PCI总线地址空间的第11~0位。这两个寄存器的主要字段如下所示。 PIWBARn寄存器的BEA字段存放PCI总线地址空间的第43~32位。 PIWBARn寄存器的BA字段存放PCI总线地址空间的第31~12位。 PIWBEARn寄存器的BEA字段存放PCI总线地址空间的第63~44位。 3 PIWARn寄存器 PIWARn寄存器描述当前Inbound窗口的属性,该寄存器由以下位和字段组成。 EN位,第0位。该位是Inbound窗口的使能位,为1表示当前Inbound寄存器组描述的存储器地址空间到PCI总线地址空间的映射关系有效;为0表示无效。 PF位,第2位。该位为1表示当前Inbound窗口描述的存储区域支持预读;为0表示不支持预读。 TGI字段,第8~11位。该字段为0b0010表示当前Inbound窗口描述的存储区域属于PCIe总线域地址空间;为0b1100表示当前Inbound窗口描述的存储区域属于RapidIO总线域地址空间。该字段对于OCeaN实现不同域间的报文转发非常重要,如果当前Inbound窗口的TGI字段为0b0010,此时PCI总线上的设备可以使用该Inbound窗口,通过OCeaN直接读取PCIe总线的地址空间,而不需要经过SoC平台总线。如果TGI字段为0b1111表示Inbound窗口描述的存储器区域属于主存储器地址空间,这也是最常用的方式。使用该字段可以实现HOST主桥的Peer-to-Peer数据传送方式。 RTT字段和WTT字段,分别为该寄存器的第12~15位和第16~19位。Inbound窗口的RTT/WTT字段的含义与Outbound窗口的RTT/WTT字段基本类似。只是在Inbound窗口中可以规定PCI设备访问主存储器时,是否需要进行Cache一致性操作(Cache Lock and Allocate),在进行DMA写操作时,数据是否可以直接进入到Cache中。该字段是PowerPC处理器对PCI总线规范的有效补充,由于该字段的存在,PowerPC处理器的PCI设备可以将数据直接写入Cache,也可以视情况决定DMA操作是否需要进行Cache共享一致性操作。 IWS字段,第26~31位。该字段描述当前窗口的大小,Inbound窗口的大小在4KB~16GB之间,其值为2IWS+1。 4 使用Inbound寄存器组进行DMA操作 PCI设备使用DMA操作访问主存储器空间,或者访问其他PCI总线域地址空间时,需要通过Inbound窗口,其步骤如下。 (1) PCI设备在访问主存储器空间时,将首先检查当前PCI总线地址是否在PIWBARn和PIWBEARn寄存器描述的窗口中。如果在这个窗口中,则将这个PCI总线地址通过PITARn寄存器转换为存储器域的地址或者其他PCI总线域的地址;如果不在将禁止本次访问。 (2) 如果PCI设备访问的是存储器地址空间,HOST主桥将来自PCI总线的读写请求发送到存储器空间,进行存储器读写操作,并根据Inbound寄存器组的RTT/WTT位决定是否需要进行Cache一致性操作,或者将数据直接写入到Cache中。 结合Outbound寄存器组,可以发现PCI总线地址空间与存储器地址空间是有一定联系的。如果存储器域地址空间被Inbound寄存器组反向映射到PCI空间,这个存储器地址具有两个地址,一个是在存储器域的地址,一个是在PCI总线域的地址;同理PCI总线空间的地址如果使用Outbound寄存器映射到寄存器地址空间,这个PCI总线地址也具有两个地址,一个是在PCI总线域的地址,一个是在存储器域的地址。 能够被处理器和PCI总线同时访问的地址空间,一定在PCI总线域和存储器域中都存在地址映射。再次强调,绝大多数操作系统将同一个空间的PCI总线域地址和存储器地址设为相同的值,但是这两个相同的值所代表的含义不同。 由此可以看出,如果MPC8548处理器的某段存储器区域没有在Inbound窗口中定义时,PCI设备将不能使用DMA机制访问这段存储器空间;同理如果PCI设备的空间不在Outbound窗口,HOST处理器也不能访问这段PCI地址空间。 在绝大多数PowerPC处理器系统中,PCI设备地址空间都在HOST主桥的Outbound窗口中建立了映射;而MPC8548处理器可以选择将哪些主存储器空间共享给PCI设备,从而对主存储器空间进行保护。 2.2.4 x86 处理器的HOST主桥 x86处理器使用南北桥结构连接CPU和PCI设备。其中北桥(North Bridge)连接快速设备,如显卡、和内存条,并推出PCI总线,HOST主桥包含在北桥中。而南桥(South Bridge)连接慢速设备。x86处理器使用的南北桥结构如图2‑6所示。 Intel使用南北桥概念统一PC架构。但是从体系结构的角度上看,南北桥架构并不重要,北桥中存放的主要部件不过是存储器控制器、显卡控制器和HOST主桥而已,而南桥存放的是一些慢速设备,如ISA总线和中断控制器等。 不同的处理器系统集成这些组成部件的方式并不相同,如PowerPC、MIPS和ARM处理器系统通常将CPU和主要外部设备都集成到一颗芯片中,组成一颗基于SoC架构的处理器系统。这些集成方式并不重要,每一个处理器系统都有其针对的应用领域,不同应用领域的需求对处理器系统的集成方式有较大的影响。Intel采用的南北桥架构针对x86处理器的应用领域而设计,并不能说采用这种结构一定比MPC8548处理器中即含有HOST-to-PCI主桥也含有HOST-to-PCIe主桥更为合理。 在许多嵌入式处理器系统中,即含有PCI设备也含有PCIe设备,为此MPC8548处理器同时提供了PCI总线和PCIe总线接口,在这个处理器系统中,PCI设备可以与PCI总线直接相连,而PCIe设备可以与PCIe总线直接相连,因此并不需要使用PCIe桥扩展PCI总线,从而在一定程度上简化了嵌入式系统的设计。 嵌入式系统所面对的应用千姿百态,进行芯片设计时所要考虑的因素相对较多,因而在某种程度上为设计带来了一些难度。而x86处理器系统所面对的应用领域针对个人PC**务器,向前兼容和通用性显得更加重要。在多数情况下,一个通用处理器系统的设计难过专用处理器系统的设计,Intel为此付出了极大的代价。 在一些相对较老的北桥中,如Intel 440系列芯片组中包含了HOST主桥,从系统软件的角度上看HOST-to-PCI主桥实现的功能与HOST-to-PCIe主桥实现的功能相近。本节仅简单介绍Intel的HOST-to-PCI主桥如何产生PCI的配置周期,有关Intel HOST-to-PCIe主桥 的详细信息参见第5章。 x86处理器定义了两个I/O端口寄存器,分别为CONFIG_ADDRESS和CONFIG_DATA寄存器,其地址为0xCF8和0xCFC。x86处理器使用这两个I/O端口访问PCI设备的配置空间。PCI总线规范也以这个两个寄存器为例,说明处理器如何访问PCI设备的配置空间。其中CONFIG_ADDRESS寄存器存放PCI设备的ID号,而CONFIG_DATA寄存器存放进行配置读写的数据。 CONFIG_ADDRESS寄存器与PowerPC处理器中的CFG_ADDR寄存器的使用方法类似,而CONFIG_DATA寄存器与PowerPC处理器中的CFG_DATA寄存器的使用方法类似。CONFIG_ADDRESS寄存器的结构如图2‑7所示。 CONFIG_ADDRESS寄存器的各个字段和位的说明如下所示, Enable位,第31位。该位为1时,对CONFIG_DATA寄存器进行读写时将引发PCI总线的配置周期。 Bus Number字段,第23~16位,记录PCI设备的总线号。 Device Number字段,第15~11位,记录PCI设备的设备号。 Function Number字段,第10~8位,记录PCI设备的功能号。 Register Number字段,第7~2位,记录PCI设备的寄存器号。 当x86处理器对CONFIG_DATA寄存器进行I/O读写访问,且CONFIG_ADDR寄存器的Enable位为1时,HOST主桥将这个I/O读写访问转换为PCI配置读写总线事务,然后发送到PCI总线上,PCI总线根据保存在CONFIG_ADDR寄存器中的ID号,将PCI配置读写请求发送到指定PCI设备的指定配置寄存器中。 x86处理器使用小端地址模式,因此从CONFIG_DATA寄存器中读出的数据不需要进行模式转换,这点和PowerPC处理器不同,此外x86处理器的HOST主桥也实现了存储器域到PCI总线域的地址转换,但是这个概念在x86处理器中并不明晰。 本书将在第5章以HOST-to-PCIe主桥为例,详细介绍Intel处理器的存储器地址与PCI总线地址的转换关系,而在本节不对x86处理器的HOST主桥做进一步说明。x86处理器系统的升级速度较快,目前在x86的处理器体系结构中,已很难发现HOST主桥的身影。 目前Intel对南北桥架构进行了升级,其中北桥被升级为MCH(Memory Controller Hub),而南桥被升级为ICH(I/O Controller Hub)。x86处理器系统在MCH中集成了存储器控制器、显卡芯片和HOST-to-PCIe主桥,并通过Hub Link与ICH相连;而在ICH中集成了一些相对低速总线接口,如AC’97、LPC(Low Pin Count)、IDE和USB总线,当然也包括一些低带宽的PCIe总线接口。 在Intel最新的Nehelem 处理器系统中,MCH被一份为二,存储器控制器和图形控制器已经与CPU内核集成在一个Die中,而MCH剩余的部分与ICH合并成为PCH(Peripheral Controller Hub)。但是从体系结构的角度上看,这些升级与整合并不重要。 目前Intel在Menlow 平台基础上,计划推出基于SoC架构的x86处理器,以进军手持设备市场。在基于SoC构架的x86处理器中将逐渐淡化Chipset的概念,其拓扑结构与典型的SoC处理器,如ARM和PowerPC处理器,较为类似。     WBA字段并没有保存存储器域的第24~35位地址,因为Outbound窗口大小至少为4KB。 这个HOST-to-PCIe主桥也是RC(Root Complex)的一部分。 Nehelem处理器也被称为Core i7处理器。 Menlow平台于2008年3月发布,其目标应用为MID(Mobile Internet Device)设备。Menlow平台基于低功耗处理器内核Atom。
  • 热度 24
    2012-4-19 15:47
    2219 次阅读|
    0 个评论
    其实从去年底至今年这会儿,我主要是折腾在两块板子上,一块是我自己画的跟smartfusion相对应的那块信号处理板,一块是基于powerpc的那块载板。两块板子的共同特点是都卡在st16c654这个芯片上。还是分开来说吧。   我自己的那块信号板,可以说在跟st16c654的原理连接上是完全错误的:   我选的st16c654是sop64封装的,这样它就只能是intel(16)mode 下,而我是把smartfusion的EMC直接连接在st16c654的引脚上的,这样首先没有写使能信号,其次通道使能cs信号相对于地址没有延迟,再次EMC是32位的,这样地址总线上的A0,A1是没法用的,最后,由于不熟悉芯片,直接把reset信号接到FPGA上,其实这样也可以,但是最好还是应该加一个RC复位信号,这样有一个短暂的脉冲,整个片子才开始启动。   后来经过无数飞线之后,终于调通。但是在芯片厂商的建议是自己在smartfusion芯片内部的FPGA部分做一个总线控制器,通过APB3总线来驱动st16c654芯片,这样会更好更灵活一些。而我则考虑到由于每个芯片均要4个通道使能信号,则两块芯片共需8个,显然如果用MSS内部的EMC总线,它只有2个片选段,这是无论如何都不够用的,所以只有自己写一个总线控制器,并参考官方给出的示例,写一个桥,把该控制器与APB3总线连接起来。后来用ModelSim进行仿真后,才完成一个初步,还需要进行更深的测试。   至于那块加载在自己所做载板上的powerpc的板卡,虽然在该最小系统板内部跑的是Vxworks,但是由于是以download app的形式进行调试,所以与Vxworks本身倒没有太大关系。反而由于是三个人都有在上面做工作,所以同样也走了不少弯路,:   首先要通过CPLD进行译码,对不同的地址进行翻译后输出不同的通道使能端。这里面有一个片选信号的使用,即用片选信号来进行锁定,否则容易造成混乱。其次同样是reset信号的问题,这里在CPLD内部产生一个脉冲信号,在芯片上电时候进行复位。最后是中断的使用,由于在Vxworks内部如果直接加中断的话,会造成系统紊乱,所以还是将串口最后封装在BSP里面,打包成为IO设备来进行操作。   另外的问题则是另外的一类了,在外部总线输出时,powerpc的数据总线是反的,这样高八位和低八位就成了颠倒的了,但是由于沟通上的错误,外部总线输出是16位的时候,我们接的是A0,A1,A2。这样A0没有用,但是还是可以操作ST16c654的,起码是在用查询方式的时候是可以的。当厂家采用硬连接的手段把POWERPC的数据总线反过来时,我们还是按照8位的方式来操作,这样我们操作的数据就是高八位的数据了,这样又造成了新的问题。所以带来了又一次的反复。  
相关资源
  • 所需E币: 5
    时间: 2023-2-12 18:54
    大小: 1.98MB
    上传者: ZHUANG
    基于PowerPCDSP的弹道仿真系统软件设计
  • 所需E币: 4
    时间: 2022-1-6 09:24
    大小: 2.91MB
    上传者: ZHUANG
    基于PowerPC的嵌入式Linux视频监控系统设计与研发
  • 所需E币: 1
    时间: 2022-1-3 22:26
    大小: 2.18MB
    上传者: czd886
    基于PowerPC对FPGA上电自动加载的设计与实现
  • 所需E币: 1
    时间: 2021-4-10 23:23
    大小: 2.65MB
    上传者: ZHUANG
    基于DSP和PowerPC的开放式伺服控制系统设计
  • 所需E币: 1
    时间: 2021-4-7 20:57
    大小: 1.98MB
    上传者: czd886
    基于AltiVec技术的PowerPC处理器矢量运算性能测试
  • 所需E币: 0
    时间: 2020-12-25 21:06
    大小: 2.18MB
    上传者: czd886
    基于PowerPC对FPGA上电自动加载的设计与实现
  • 所需E币: 4
    时间: 2019-12-26 12:24
    大小: 131.26KB
    上传者: 978461154_qq
    SC8850B型单机板技术参数……
  • 所需E币: 3
    时间: 2019-12-26 10:28
    大小: 2.39MB
    上传者: rdg1993
    PowerPC处理器的软件仿真器,由Lauterbach公司发布……
  • 所需E币: 4
    时间: 2019-12-26 01:28
    大小: 581.89KB
    上传者: 978461154_qq
    MPC7448PowerPCProcessor……
  • 所需E币: 5
    时间: 2019-12-26 01:27
    大小: 97.55KB
    上传者: 二不过三
    于MPC82xxCPU和专用编解码芯片的DVR方案设计浅析……
  • 所需E币: 5
    时间: 2019-12-26 01:24
    大小: 196KB
    上传者: givh79_163.com
    运行在Powerpc上的嵌入式Linux……
  • 所需E币: 4
    时间: 2019-12-26 00:56
    大小: 447.68KB
    上传者: 978461154_qq
    vxworkspowerpcbsp与ucos的移植--嵌入式软件的复用……
  • 所需E币: 3
    时间: 2019-12-25 21:34
    大小: 163.95KB
    上传者: 二不过三
    Features:•Processor:AMCCPowerPC440EPxor440GRxupto667MHz•RAM:Upto256MBDDR2RAM•FLASH:32MBNORFlashand32MBNANDFlash•Ethernet:2x10/100/1000•SerialPorts:TwoRS-232ports•USB:2USB2.0Device,1USB2.0Hostwith440EPxprocessor•Expansion:2PCIslots,I2C/SPIheader•I2CDevices:SerialEEPROM,TemperatureSensor•Power:5Vwallcubepowersupply•Debug:JTAGandRISCTracewithMictorConnectorsforGreenHillsSuperTraceProbe•FormFactor:5”x7”……
  • 所需E币: 3
    时间: 2019-12-25 21:35
    大小: 213.12KB
    上传者: givh79_163.com
    BDMsupportforCPU16/32/32+,PowerPC5xx/8xx,ColdFireJTAGsupportforARM,M-CORE,PowerPC4xx/6xx/7xx/74xx,PowerPC82xx/83xx/85xx,XScale,MIPS32,MIPS64HostcommunicationviaRS232andEthernetProgramdownloadspeedupto320Kbytes/sTargetcommunicationspeedupto16Mbit/sSupportstargetsystemvoltagefrom1.8–5VSupportsdebuggersfromleadingvendorsSamehardwareforallsupportedtargetsanddebuggersFlashmemoryon-boardprogrammingEasyconnectiontothetargetsystemRobustEMC-optimizeddesignExcellentprice-performancepayoff3yearswarranty……
  • 所需E币: 4
    时间: 2019-12-25 21:34
    大小: 397.42KB
    上传者: 微风DS
    TheEP405singleboardcomputerstakeadvantageoftheAMCC405GPand405GPrPowerPCprocessors.ByintegratingallofthefeaturesofthePowerPCintoaproductionreadyembeddeddevelopmentsystem,theEP405reducesTime-To-MarketandincreasesproductreliabilityforCommunications,Military/Aerospace,Medical,andIndustrialapplications.TheEP405singleboardcomputersincludetheEBCbusthatprovidesdirectaccesstothe405processorsignalsforadditionalI/Oexpansion.……
  • 所需E币: 3
    时间: 2019-12-25 21:34
    大小: 395.78KB
    上传者: wsu_w_hotmail.com
    TheEP5200CsingleboardcomputerstakeadvantageoftheFreescaleMPC5200procesors.ByintegratingallofthefeaturesoftheMPC5200PowerPCintoaproductionreadyembeddeddevelopmentsystem,theEP5200CreducesTime-To-MarketandincreasesproductreliabilityforCommunications,Military/Aerospace,Medical,andIndustrialapplications.TheEP5200CsingleboardcomputersincludeanexpansionbusforadditionalI/Oexpansion.……
  • 所需E币: 4
    时间: 2019-12-25 21:33
    大小: 635.71KB
    上传者: givh79_163.com
    TheEP85xxMPPMC/StandAlonesingleboardcomputerstakeadvantageoftheFreescaleMPC85xxPowerQUICCIIIPowerPCprocessors.ByintegratingallofthefeaturesofthePowerPCintoaproductionreadyembeddeddevelopmentsystem,theEP85xxMreducesTime-To-MarketandincreasesproductreliabilityforCommunications,Military/Aerospace,Medical,andIndustrialapplications.……
  • 所需E币: 5
    时间: 2019-12-25 21:33
    大小: 415.84KB
    上传者: 2iot
    TheEP88xCsingleboardcomputerstakeadvantageoftheFreescaleMPC880and885PowerQUICCPowerPCprocessors.ByintegratingallofthefeaturesofthePowerPCintoaproductionreadyembeddeddevelopmentsystem,theEP88xCreducesTime-To-MarketandincreasesproductreliabilityforCommunications,Military/Aerospace,Medical,andIndustrialapplications.TheEP88xCsingleboardcomputersincludetheEPXbusthatprovidesdirectaccesstoMPC88xprocessorsignalsforadditionalI/Oexpansion.……
  • 所需E币: 4
    时间: 2019-12-25 21:22
    大小: 496.6KB
    上传者: 二不过三
    Linuxin2000hadweakhardwaresupport:SupportforspecificPowerPCtechnologieswasinconsistent.SupportforARMwasextremelyweak.Sixtyfourbitsupportwasjustgettingstarted.……
  • 所需E币: 4
    时间: 2019-12-25 16:42
    大小: 106.75KB
    上传者: 16245458_qq.com
    Freescale-PowerPC全系列介绍……