本文向您展示了如何实现sparc处理器的分析。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。
1.前言
前几天在知乎上看到一篇《时代的眼泪:繁华落尽的SPARC处理器》的文章,对太阳公司的UltraSPARC处理器做了一个大概的描述。当时惠普是左,IBM是右,就像一副傲慢的样子。我想我不会详细谈论SPARC是如何一步步从繁荣走向萧条的,以及SPARC在漫长的历史中是如何发挥重要作用的。本文主要想谈谈与sparc系统相关的一些问题。目前,sparc出现在我们的视野中并不多见。事实上,sparc处理器的使用一直都是用在航天领域。由于其特殊的体系结构和美国对华现状,sparc体系结构在航空航天、飞机和雷达领域的应用越来越重要。目前,北京微电子技术研究院已经生产了几款SPARC V8架构的芯片。其中,BM3803是基于SPARC V8架构的国产32位精简指令集嵌入式芯片,具有功能强、可靠性高、功耗低等特点。让我们从三个部分来看看sparc v8处理器的特性:系统启动、窗口寄存器和中断处理。
2.sparc 芯片启动
一般我们在做嵌入式开发的时候,都是用C语言编写和实现的,但实际情况是系统开机后,通常会执行一个初始的汇编代码,可以理解为系统的BIOS。对于采用sparc v8架构的bm3803处理器,地址分配空间如下:
地址0x 00000000-0x 1 fffffff PROM0x 2000000-0x 3 fffffff/o0x 4000000-0x 7 fffffff SRAM一般芯片启动后,要执行的代码在0地址,所以定线代码放在PROM的0地址空间。
设置C语言可以执行的栈空间,清除bss段。堆栈的布局可参考如下:
3.寄存器
3.1 窗口寄存器
因为sparc架构集成了Berkeley RISC架构,所以窗口寄存器是一个非常重要的特性。也就是说,窗口寄存器组仅对当前程序可见。寄存器窗口包括32个不带浮点的寄存器。
寄存器组monic寄存器地址全局% G0-% G7R[0]-R[7]out % O0-% O7R[8]-R[15]本地% l0-% L7R[16]-R[23]in % i0-% I7R[24]-
当执行保存指令时,将分配一个全新的串行端口CWP-1。当发出RESTORE指令时,接着是CWP 1。其中,两个窗口共有8个寄存器,即前一个窗口的输出是下一个窗口的输入。这样可以提高程序的执行效率,不需要每次都处理所有寄存器。
00-1010一般来说,sparc上的特殊寄存器是名为%PSR的处理器状态寄存器。和无效的windows注册表,名为%WIM。
PSR主要控制CWP窗口操作、中断处理开关和陷阱处理。
WIM是无效窗口,BIT0~BIT7分别对应窗口0~7。CPU的八个寄存器窗口中只能有一个窗口是无效的。
00-1010当sparc处理中断和陷阱时,它还需要一个陷阱的地址。一般进入中断后,会进入另一种模式,也就是说会打开一个新的窗口,比如我们切换任务的时候。Sparc由软中断(TA指令)实现。SPARC体系结构不支持PC指针的直接操作,但当中断发生时,CPU会将当前PC和NPC写入寄存器%l1和%l2。中断结束时,中央处理器自动将%l1和%l2的内容写入电脑和NPC。以这种方式,实现了任务切换过程。
当发生中断嵌套时,也需要通过中断栈保存当前场景。
以上内容就是如何实现sparc处理器的分析。你学到什么知识或技能了吗?如果你想学习更多的技能或丰富你的知识,请关注行业信息渠道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/151922.html