据悉,微软已经将Windows 10与Linux双系统移植到了基于EDGE体系结构的E2芯片上。微软自2010年开始,便致力于进行EDGE架构处理器的研发。
除了双系统,这颗芯片还移植了Busybox与FreeRTOS,标准C/C++与.NET Core运行时库,Windows内核调试器,Visual C++ 2017命令行工具以及.NET即时编译器RyuJIT。
微软还将广泛使用的LLVM C/C++编译器、调试器以及相关的C/C++运行时库,移植到了E2上。微软研发团队希望证明一件事情,即“改变”这颗芯片不需要重新为它编写软件,而是只通过重新编译程序即可。
据悉,E2处理器的原型是具有可编程能力的FPGA,这是芯片开发期间通常采用的形式。微软团队开发了一个能够启动Windows和Linux系统,并可以运行应用程序的周期精确模拟器。
显然,微软E2的设计思想与Arm、AMD等公司大相径庭,它采用EDGE(Explicit Data Graph Execution)体系结构。据悉,高通研发人员正在评估两款基于EDGE架构的芯片设计:较小的R0内核,以及运行频率2GHz、10nm工艺的R1。目前该项目仍在进行中。
如今市面上典型主流处理器的运行规则更像是一个“垃圾回收机”:垃圾通过一条仅有的传送带依次进入垃圾回收机,随后机器根据垃圾的类别进行分类,再送到不同的传送带进行独立传输,并最终由机器的不同部分进行处理。以ARM Cortex-A76为例,其指令被分到八个传送带送进内核进行传输:四路用于整数运算,两路用于浮点运算,两路用于访问存储器中的数据。即使最前端接收到的是无序的执行指令,处理器也将有条不紊地进行指令的处理。
对于研发人员而言,他们想做的就是:避免资源浪费。举例而言,尽管一个整数单元不进行任何运算,然而其他路指令的执行却要进行排队。如果一条通道的指令执行需要依赖于另外一条通道的指令执行输出,就需停下来等待,这样时间与资源就被浪费掉。处理器要每秒运行10亿次及以上,就为了保证工作的完成。
也许E2所采用的EDGE架构能有效解决以上问题。EDGE是一种分布式结构,指令映射到多个分片上同时执行。在不同的代码分片中,代码使用其专用寄存器,而非全局访问的执行模式。编译器还会对代码进行注释以描述数据在程序中的流向,从而允许CPU相应地调度指令块。
而且,EDGE可以让核心处理器通过分片技术同时处理多个指令。这与Cortex-A76的运行方式是不同的。EDGE的目标就是比竞争对手的架构可以更快地运行软件。就像前面提到的高通R1设计一样。 R1是32位指令宽的乱序处理器蓝图,R0是8位宽。
E2芯片的研发已进行多年,透过目前的消息来“窥见”E2的研发进展。
去年10月份,Linux系统在E2中启动,如今Windows 10已经被移植到该架构中,同时微软正在与芯片巨头高通开展合作。不过微软官网上周删除了E2项目的相关页面及最新信息。
在今年美国加州举办的计算机体系结构国际会议上,微软研究员Doug Burger、Aaron Smith、Greg Wright与高通处理器研究部门的高级工程主管,都发表了关于EDGE处理器的演讲,并演示了Windows在E2模拟器上的运行情况。
尽管E2的指令部署已经在几年前完成,但是现在大部分信息仍作为机密不对外公开。目前来看,外界可得知的消息就是每个代码块都会从全局寄存器读取数据,并在临时专用寄存器进行数据的处理,最终将结果写回全局寄存器。
微软在设计芯片方面已经有了一定的案例,例如HoloLens虚拟现实护目镜中的数学加速器。 据推测,这种E2架构设计可能最适合在FPGA中实现“软”处理器。