欢迎来到天天文库
浏览记录
ID:44355266
大小:38.50 KB
页数:4页
时间:2019-10-21
《定制多核系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、内存共享多核处理器系统中共享资源类型最普遍的是内存。共享的内存可以用来交换各处理器之间的状态,搭建多个处理器同吋计算收集到的数据结构。如果被共享的内存屮存储了多个处理器需要的程序,每个处理器需要拥有独立的存储区保证代码的运行,而不能共享相同的内存区域存储程序。参看1J0,明确如何保证共享内存的各处理器拥有特有的区域来存储程序。如果被共享存储器的部分空间用来存储数据,那么它的从端口必须与每个处理器的主端口连接。多核处理器之间共享数据存储器要比指令存储器复杂,因为数据存储器要进行数据的读写。如果一个处理器在对数据存储器的特定区域进行写数
2、据,而同时另一个处理器对同一区域进行数据的读写,有可能造成数据的损坏,导致应用错误,甚至是系统崩溃。共享存储器的处理器在使用共享资源的时候需要一种机制来通知其他处理器,防止其他处理器的干涉。硬件互斥核NI0S2处理器以其具有的硬件互斥核为共享资源提供了一种保护。这种互斥核不是NIOS2处理器木身具有的一种特性,而是SOPCBuilder的一个组成部分。正如互斥核的名字一样,它可以实现多核处理器之间的互相排斥。互斥核可以使系统屮共同工作的多核处理器,在同一时刻只有一个处理器能够接入共享资源。这可以有效避免因多个处理器尝试同时使用资源造
3、成的数据损坏。互斥核是一种共享资源,可以提供〃检测■设置〃操作。处理器在使用互斥核前,先检测其是否处于空闲状态,如果互斥核是空闲的,处理器经过一步操作使互斥核锁定。当处理器使用完共享存储资源后,释放互斥核。此吋,其他处理器便可以通过锁定互斥核来使用共享存储资源。如果没有互斥核,〃检测•设置〃指令正常情况下需要处理器执行两条指令来完成,而与此同时,另一个处理器也可能对共享资源进行空闲检测,并且错误的认为共享存储器是空闲的。这种情况下可能使得两个处理器都认为自己成功申请接入存储器,而实际上却并不是这样。需要申明的是,互斥核并不是简单地从
4、物理上实现禁止多核处理器同时接入共享资源的保护。运行在处理器上的程序是需要遵守应用规范的。在处理器接入共享存储空间之前,运行的指令需要一直申请获取互斥核。在很多操作系统中存在另一种互斥核,叫做软互斥核,对共享资源提供相同的保护。不同之处在于,软互斥核只是一种软件构架,用于保护运行在同一处理器上的多进程对硬件资源的破坏。而硬互斥核是使用Avalon总线接口的SOPCBulider的一个组成部分,它是用逻辑器件保证在任一给定时间内只有一个处理器锁定互斥核。因此,每一个处理器在接入共享存储资源前,都需耍等待并锁定互斥核,从而保证资源不会因
5、多处理器同时接入而导致数据损坏。无互斥核的NIOS2系统很多情况下,互斥核拥有保护被多核处理器共享的任何资源。然而,在某些情况下,是不需要互斥核的。包括单向或者环行信息缓冲器排列,这些情况下,只有一个处理器对某个特定的存储位置写入数据。但是,在没有互斥核的情况下实现资源的安全共享是非常复杂的,必要吋,还是加入互斥核为好。多核处理器共享外设通常,在没有互斥核的情况下,NI0S2开发环境是不支持多核之间共享无存储的外设的。在多核系统屮共享外设有很多困难的挑战,通常会导致一些无效率的系统设计。最大的问题在于共享有中断的外设。如果一个外设对
6、多个处理器产生中断,没有可靠的方式去保证究竞是哪个处理器去响应和服务中断。此外,如果一个外设是用作多核系统的输入设备,这将很难去决定哪个处理器应该收集来自外设的输入。不可否认的是,我们完全可以做出一个友好的系统来解决这些问题,但是,这已经超出了我们当前文件的讨论范围,而且NIOS2硬件抽象层库也不支持这种系统。更多NIOS2硬件抽象层库的信息,请参看N0S2软件开发手册。Altera公司建议,每个无存储的外设只能同时被一个处理器接入。如果另一个处理器需要使用该外设,应该使用有互斥核保护或者适用多核处理器的信息缓冲器。在创建系统时,特
7、别是多核系统时,建议只把需耍信息交流的外设连接在一起。例如,一个处理器只需要在一片片上寄存器上运行,那么就不需要把该处理器与系统中的其他存储器相连接。物理上断开处理器与存储器的连接,不仅可以节省FPGA的资源,同吋可以保证处理器不会损坏其他存储器。在单处理器系统屮,SOPCBuilder一般会智能连接主从组成部分。然而,在多核处理器中,连接不同的组成部分,是需要视设计本身而定的。因此,在设计多核处理器系统时,需要明确地知道每个组成部分该如何恰当的连接。多核处理器和重叠的地址空间单处理器系统通常不允许超过一个的从外设占用相同的地址空间
8、,因为这样会导致冲突。然而,在多核处理器系统中,只耍每个从外设唯一地从屈于不同的处理器,那么不同的从外设可以占用相同的基地址而不会产生冲突。这是因为,并不是每个从外设都与所有的处理器相连接,每个处理器都有自己不同的系统分配。如果A处理
此文档下载收益归作者所有