的方式在模拟两个内核同步
-
18-09-2019 - |
题
我必须建立在C双核处理器模拟器(它实际上是一个多级存储器仿真,高速缓存L1 / L2,块取代,等等)。事情是,我有一个很难搞清楚的方式到核心(这我编程时,如线程)同步。任何想法如何,我可以做一个全局时钟?我应该从线程子进程改变? 由于事先
解决方案
这么多的选择在这里:因为你可能最终达到支持多线程复杂的相互作用,你可能要考虑使用的“虚拟时钟”有消息传递“总线” 。通过这种方式,你有更多的时间专注于核心功能,而不是调试控制同步逻辑...
使用这种技术,你可以建立一个状态机(请参阅 这里 强>)每“演员”线程(最坏情况)和少担心互斥/条件。一旦你有了这个基础,你就可以搞定显示中游的情况下(例如,“我忘了这个细节......不用担心,只需添加一个状态在这里......不必再-shuffle我的互斥)。
另外,由于这样做模拟是所有关于“虚拟时间”(因为不能运行实时!),则具有基于“虚拟时钟”的基部结构抽象问题到适当的水平。
其他提示
您可以有一个时钟线加N处理器线程。时钟线可以明确地使每个处理器线程调用,使1个处理步骤。每个处理器线程获取从时钟线程doStep()
通话;它使一个步骤,然后把控制返送给时钟线。
您也可以随机在其中的处理器线程被称为做的步骤,使你更容易抓住漏洞在客户端代码的顺序。
不隶属于 StackOverflow