关于X86体系结构下硬件和多核并行OS的问题,高手请进!

吾为男子 2012-08-29 11:17:47
加精
这个问题有点复杂,怕描述不清楚,请各位前辈耐心看完

在一台4核的机器上,同时运行两个操作系统,一个是Windows,一个是XXX(类Linux操作系统,部分代码来自Linux,部分代码重写),这两个系统分别使用两个核和不同区段的内存,互不干扰,完全并行运行,双方完全对对方透明。

现在要在XXX操作系统上使用APIC中断模式,Local APIC的设置没问题,因为每一个核都自带一个,互不干扰,然而IO APIC的设置则出现问题了,经过这些天的测试和试验,有以下情况和疑问:

1.在Windows和XXX都启动之后,在XXX操作系统中尝试访问基址FEC00000的IO APIC MMIO的寄存器,XXX操作系统则会触发异常,为什么不能访问这段内存呢?(XXX操作系统中建立了这段内存的段描述符和页表的,对于映射到RAM的内存地址,其中定义了一些Windows和XXX共享的区段用于进行通信和交互,Windows和XXX并发的访问,是不存在问题的,而且他们之间也没有任何同步机制,总线仲裁会串行化CPU核的总线请求)

2.在Windows启动之前(启动顺序是先启动XXX操作系统,然后再启动Windows),在XXX的初始化代码中访问IO APIC内存映射的寄存器,可以进行读写,但是读写的内容完全不对,经过实验验证,发现这段内存地址没有被映射到IO APIC的IOREGSEL和IOREGWIN两个寄存器上,按理说IO APIC的MMIO寄存器是硬布线映射的,为什么会出现这种情况?
...全文
5515 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
JiMoKuangXiangQu 2013-09-23
  • 打赏
  • 举报
回复
学习学习了!
侯雨生 2013-07-29
  • 打赏
  • 举报
回复
很深奥,看不大明白。
jerry_zhang99 2013-06-27
  • 打赏
  • 举报
回复
很深奥啊,求求大哥给点分吧,没有分下载了
ervinewang 2012-12-02
  • 打赏
  • 举报
回复
理论上总线仲裁(interconnect)会串行化总线操作,而不需要同步机制。况且,interconnect很可能是128位总线宽度的。 你是否愿意在XXX OS中,在User Space访问/dev/mem,来访问0xFEC00000,而不是在内核中更底层的方式读取。
superwiles 2012-12-01
  • 打赏
  • 举报
回复
还是加一个 hypervisor 否则IO 会有很多问题,
curious_cat 2012-11-08
  • 打赏
  • 举报
回复
RTX, INTime等Windows下的实时系统组件的本质是将需要实时运行的应用程序放在ring0层,也就是驱动程序里面的IRQ级别,这样就可以不受win32下面的应用程序(ring3)影响,在目前的主流处理器上,任务周期可以达到几十微妙的级别; 这种方式会带来不便之处: 实时部分的应用程序调试复杂,无法单步调试; 无法使用windows上的同步机制; 和win32应用程序同步比较复杂,需要自定义同步机制(一般在共享内存中实现); 无法直接使用浮点运算(这对机器人控制之类的应用非常关键); 这种方法我在很多年前已使用到我们的产品中了,只是没有做成标准的RTOS而已;透漏一下数据,在intel D525 +windows Xp下,做一路PID和和速度规划,周期可以达到100微妙,Jitter不会超过10微妙。
yjukh 2012-09-14
  • 打赏
  • 举报
回复
RTX是目前共认的最可靠、最易用的WINDOWS下的实时解决方案
军工单位做仿真现在也用这个,所以前面我贴了一个他们的构架图,希望你们参考它的结构。

RTX要好几万刀,我一直希望国内有人做成它这样的功能,但一直没找到,唯一做出来的也就是国防科大,但也很贵。
希望你们这个开发成功,给大家一个借鉴。

这篇论文不错:
http://download.csdn.net/detail/yjukh/4570684
xxxqqq5 2012-09-06
  • 打赏
  • 举报
回复
虽不懂,但觉厉
LLR104 2012-09-04
  • 打赏
  • 举报
回复
学习了,不是很明白
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 的回复:]
我所在的这家公司是外企,研制引线框架、芯片封装等的自动化设备的,设备上的自动化控制程序需要很高的实时性,这个系统也是为了节约成本而这么做。。。。
[/Quote]

“设备上的自动化控制程序”还用windows?
吾为男子 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 的回复:]
楼主可否说一下你们公司所属的行业和使用该方案的产品的类型。

做这方面的工作有几年了,也一直很关注各方面的动态。没听说过国内有哪家公司有过这方面的应用,所以很是好奇。

这种基于通用操作系统的实时扩展。在windows平台上,只有美国的几家公司在做。这种东西应用场合不多,而技术门槛用很高,所以做的人还真不是太多。而在linux平台,RTLinux和RTAI都已经几年没有更新了。估计是停止继……
[/Quote]
我新发了一个帖子,在Windows启动之后,在XXX操作系统中尝试访问Chipset Configuration Registers中的OIC寄存器发生缺页异常,地址映射是肯定没有问题的,前辈有空帮忙看看这个帖子吧
http://topic.csdn.net/u/20120904/11/c7c1308f-3c5f-418e-b3f7-f377ec65c927.html
吾为男子 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 的回复:]
楼主可否说一下你们公司所属的行业和使用该方案的产品的类型。

做这方面的工作有几年了,也一直很关注各方面的动态。没听说过国内有哪家公司有过这方面的应用,所以很是好奇。

这种基于通用操作系统的实时扩展。在windows平台上,只有美国的几家公司在做。这种东西应用场合不多,而技术门槛用很高,所以做的人还真不是太多。而在linux平台,RTLinux和RTAI都已经几年没有更新了。估计是停止继……
[/Quote]

我所在的这家公司是外企,研制引线框架、芯片封装等的自动化设备的,设备上的自动化控制程序需要很高的实时性,这个系统也是为了节约成本而这么做。。。。
lcgkm 2012-09-04
  • 打赏
  • 举报
回复
TEE?
一个并行的安全运行环境,使得可信任程序运行在独立的环境中。
这是个大趋势吧
吾为男子 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 的回复:]
帮你在内核版置顶。
主题比较深入,希望高手参与。
另外,楼主适当地贴些源代码,软件环境,有助于分析解决问题。
[/Quote]

谢谢
dongdapeng110 2012-09-03
  • 打赏
  • 举报
回复
不小心发重了,版主帮忙删一个吧。
多谢。
dongdapeng110 2012-09-03
  • 打赏
  • 举报
回复
以前在单核PC机上做过类似的多系统并存的工作,windows系统加上自己开发的一个简单的实时操作系统。

根据你的描述,有些想法,大家一起探讨一下。

1、你说你们的做法是先启动XXX系统,然后再启动windows,二者平等共存。
目前成熟的该类方案似乎都不是这样的,两个系统间都是有主次的。主系统正常执行时,感知不到次系统的存在。而次系统要做的则是在自己正常执行的同时,让主系统感觉不到自己的存在。
以RTX为例,windows作为主系统,其需要做的就是在启动配置中将CPU的一个核空闲出来。RTX则是作为windows的一个设备驱动程序而存在,在初始化时,将空闲的CPU核启动,作为专属于RTX自己的CPU,然后再向windows申请一块内存,作为自己的专属内存,至于外部设备,不知道他是怎么实现的(RTX有实时TCP/IP功能,这肯定需要和windows共用网卡),但是,其在实现的过程中,必须要保证不能让windows感知到RTX的存在。

2、我不知道你所说的XXX系统到底是什么,但不管是什么系统,你都必须保证你清楚的知道这个系统中的每一行代码都是干什么的,必须对其100%的了解。否则,随便的一个什么小问题,你都无从下手,而这种小问题,基本上是不可避免的。

3、根据你所说的方案,还有一个问题,就是调试。没有好的调试支持,你的系统即是运行稳定了,使用起来也不会太好。而这么复杂的系统,想把调试功能做好,也是很困难的。RTX是利用了VS2005的调试器,对其进行了扩展。而这种方式,对于国内的一般公司来说,都是做不到的。

4、你说你们公司用这种方案已经好几年了,你们用了几年的方案是什么样的?
dongdapeng110 2012-09-03
  • 打赏
  • 举报
回复
以前在单核PC机上做过类似的多系统并存的工作,windows系统加上自己开发的一个简单的实时操作系统。

根据你的描述,有些想法,大家一起探讨一下。

1、你说你们的做法是先启动XXX系统,然后再启动windows,二者平等共存。
目前成熟的该类方案似乎都不是这样的,两个系统间都是有主次的。主系统正常执行时,感知不到次系统的存在。而次系统要做的则是在自己正常执行的同时,让主系统感觉不到自己的存在。
以RTX为例,windows作为主系统,其需要做的就是在启动配置中将CPU的一个核空闲出来。RTX则是作为windows的一个设备驱动程序而存在,在初始化时,将空闲的CPU核启动,作为专属于RTX自己的CPU,然后再向windows申请一块内存,作为自己的专属内存,至于外部设备,不知道他是怎么实现的(RTX有实时TCP/IP功能,这肯定需要和windows共用网卡),但是,其在实现的过程中,必须要保证不能让windows感知到RTX的存在。

2、我不知道你所说的XXX系统到底是什么,但不管是什么系统,你都必须保证你清楚的知道这个系统中的每一行代码都是干什么的,必须对其100%的了解。否则,随便的一个什么小问题,你都无从下手,而这种小问题,基本上是不可避免的。

3、根据你所说的方案,还有一个问题,就是调试。没有好的调试支持,你的系统即是运行稳定了,使用起来也不会太好。而这么复杂的系统,想把调试功能做好,也是很困难的。RTX是利用了VS2005的调试器,对其进行了扩展。而这种方式,对于国内的一般公司来说,都是做不到的。

4、你说你们公司用这种方案已经好几年了,你们用了几年的方案是什么样的?
dongdapeng110 2012-09-03
  • 打赏
  • 举报
回复
楼主可否说一下你们公司所属的行业和使用该方案的产品的类型。

做这方面的工作有几年了,也一直很关注各方面的动态。没听说过国内有哪家公司有过这方面的应用,所以很是好奇。

这种基于通用操作系统的实时扩展。在windows平台上,只有美国的几家公司在做。这种东西应用场合不多,而技术门槛用很高,所以做的人还真不是太多。而在linux平台,RTLinux和RTAI都已经几年没有更新了。估计是停止继续开发了。

有时间大家多交流。
  • 打赏
  • 举报
回复
你说你们公司用这种方案已经好几年了,你们用了几年的方案是什么样的?:)
吾为男子 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 的回复:]
以前在单核PC机上做过类似的多系统并存的工作,windows系统加上自己开发的一个简单的实时操作系统。

根据你的描述,有些想法,大家一起探讨一下。

1、你说你们的做法是先启动XXX系统,然后再启动windows,二者平等共存。
目前成熟的该类方案似乎都不是这样的,两个系统间都是有主次的。主系统正常执行时,感知不到次系统的存在。而次系统要做的则是在自己正常执行的同时,让主系统感觉不到自……
[/Quote]

谢谢你的回复,你的意见很有启发性啊,启动时保留一个核出来,使用WIndows下的驱动程序来初始化这个核并且加载用户程序到该核运行,这样做要比我们现在这样简单得多,而且IO设备的控制问题也完全不是问题了
加载更多回复(22)
计算机组成原理:硬件/软件接口 第五版英文原版答案 《计算机组成与设计:硬件/软件接口(原书第5版)》是计算机组成与设计的经典畅销教材,第5版经过全面更新,关注后PC时代发生在计算机体系结构领域的革命性变革——从单核处理器到多核微处理器,从串行到并行。本书特别关注移动计算和云计算,通过平板电脑、云体系结构以及ARM(移动计算设备)和x86(云计算)体系结构来探索和揭示这场技术变革。   与前几版一样,本书采用MIPS处理器讲解计算机硬件技术、汇编语言、计算机算术、流水线、存储器层次结构以及I/O等基本功能。   《计算机组成与设计:硬件/软件接口(原书第5版)》特点   更新例题、练习题和参考资料,重点关注移动计算和云计算这两个新领域。   涵盖从串行计算到并行计算的革命性变革,第6章专门介绍并行处理器,每章中都涉及并行硬件和软件的相关主题。   全书采用Intel Core i7、ARM Cortex-A8和NVIDIA Fermi GPU作为实例。   增加“运行更快”这一新实例,说明正确理解硬件技术的重要性,它能使软件性能提高200倍。   讨论并强调计算机体系结构的“8个伟大思想”——通过并行提高性能、通过流水线提高性能、通过预测 提高性能、面向摩尔定律的设计、存储器层次、使用抽象简化设计、加速大概率事件和通过冗余提高可靠性
这本最畅销的计算机组成书籍经过全面更新,关注现今发生在计算机体系结构领域的革命性变革:从单处理器发展到多核微处理器。此外,出版这本书的ARM版是为了强调嵌入式系统对于全亚洲计算行业的重要性,并采用ARM处理器来讨论实际计算机的指令集和算术运算,因为ARM是用于嵌入式设备的最流行的指令集架构,而全世界每年约销售40亿个嵌入式设备。与前几版一样,本书采用了一个MIPS处理器来展示计算机硬件技术、流水线、存储器层次结构以及I/O等基本功能。此外,本书还包括一些关于x86架构的介绍。   本书主要特点   ·采用ARMv6(ARM11系列)为主要架构来展示指令系统和计算机算术运算的基本功能。   ·覆盖从串行计算到并行计算的革命性变革,新增了关于并行化的一章,并且每章中还有一些强调并行硬件和软件主题的小节。   ·新增一个由NVIDIA的首席科学家和架构主管撰写的附录,介绍了现代GPU的出现和重要性,首次详细描述了这个针对可视计算进行了优化的高度并行化、多线程、多核的处理器。   ·描述一种度量多核性能的独特方法——“Roofline model”,自带benchmark测试和分析AMD Opteron X4、Intel Xeon 5000、Sun UltraSPARC T2和 IBM Cell的性能。   ·涵盖了一些关于闪存和虚拟机的新内容。   ·提供了大量富有启发性的练习题,内容达200多页。   ·将AMD Opteron X4和Intel Nehalem作为贯穿本书的实例。   ·用SPEC CPU2006组件更新了所有处理器性能实例。
《计算机组成与设计:硬件/软件接口(原书第5版)》是计算机组成与设计的经典畅销教材,第5版经过全面更新,关注后PC时代发生在计算机体系结构领域的革命性变革——从单核处理器到多核微处理器,从串行到并行。本书特别关注移动计算和云计算,通过平板电脑、云体系结构以及ARM(移动计算设备)和x86(云计算)体系结构来探索和揭示这场技术变革。   与前几版一样,本书采用MIPS处理器讲解计算机硬件技术、汇编语言、计算机算术、流水线、存储器层次结构以及I/O等基本功能。   《计算机组成与设计:硬件/软件接口(原书第5版)》特点   更新例题、练习题和参考资料,重点关注移动计算和云计算这两个新领域。   涵盖从串行计算到并行计算的革命性变革,第6章专门介绍并行处理器,每章中都涉及并行硬件和软件的相关主题。   全书采用Intel Core i7、ARM Cortex-A8和NVIDIA Fermi GPU作为实例。   增加“运行更快”这一新实例,说明正确理解硬件技术的重要性,它能使软件性能提高200倍。   讨论并强调计算机体系结构的“8个伟大思想”——通过并行提高性能、通过流水线提高性能、通过预测提高性能、面向摩尔定律的设计、存储器层次、使用抽象简化设计、加速大概率事件和通过冗余提高可靠性。
Computer Organization and Design, Fourth Edition, Fourth Edition: The hardware/Software Interface 随书所附光盘。 原书简介: 这本最畅销的计算机组成书籍经过全面更新,关注现今发生在计算机体系结构领域的革命性变革:从单处理器发展到多核微处理器。此外,出版这本书的ARM版是为了强调嵌入式系统对于全亚洲计算行业的重要性,并采用ARM处理器来讨论实际计算机的指令集和算术运算,因为ARM是用于嵌入式设备的最流行的指令集架构,而全世界每年约销售40亿个嵌入式设备。与前几版一样,本书采用了一个MIPS处理器来展示计算机硬件技术、流水线、存储器层次结构以及I/O等基本功能。此外,本书还包括一些关于x86架构的介绍。 本书主要特点 ·采用ARMv6(ARM11系列)为主要架构来展示指令系统和计算机算术运算的基本功能。 ·覆盖从串行计算到并行计算的革命性变革,新增了关于并行化的一章,并且每章中还有一些强调并行硬件和软件主题的小节。 ·新增一个由NVIDIA的首席科学家和架构主管撰写的附录,介绍了现代GPU的出现和重要性,首次详细描述了这个针对可视计算进行了优化的高度并行化、多线程、多核的处理器。 ·描述一种度量多核性能的独特方法——“Roofline model”,自带benchmark测试和分析AMD Opteron X4、Intel Xeon 5000、Sun UltraSPARC T2和 IBM Cell的性能。 ·涵盖了一些关于闪存和虚拟机的新内容。 ·提供了大量富有启发性的练习题,内容达200多页。 ·将AMD Opteron X4和Intel Nehalem作为贯穿本书的实例。 ·用SPEC CPU2006组件更新了所有处理器性能实例。

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧