前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sparc处理器浅析

sparc处理器浅析

作者头像
bigmagic
发布2020-08-10 10:52:33
1.8K0
发布2020-08-10 10:52:33
举报
文章被收录于专栏:嵌入式iot嵌入式iot

sparc处理器浅析

  • 1.前言
  • 2.sparc 芯片启动
  • 3.寄存器
    • 3.1 窗口寄存器
    • 3.2 特殊寄存器
  • 4.中断处理
  • 5.总结

1.前言

前几天我看到知乎上的一篇文章《时代的眼泪:繁华落尽的SPARC处理器》,大致上讲述了一下Sun公司的UltraSPARC处理器,那时左批HP,右打IBM,俨然一副高高在上的气势。我觉得关于SPARC如何一步一步从繁荣走向平淡,又是如何在历史长河中发挥出浓墨重彩的一笔,我就不赘述了。这篇文章主要想讲一些sparc体系相关的问题。目前,sparc出现在我们视野中并不多见,其实利用sparc处理器一直是航天上面在使用,由于其特殊的架构以及目前美国对中国的态势,sparc架构在航天、飞机、雷达领域的利用也是越来越重要了。目前北京微电子技术研究所出来几款SPARC V8架构的芯片。其中BM3803是基于SPARC V8体系结构的32位精简指令集的国产嵌入式芯片,其特点是功能强、可靠性高、低功耗等等。下面从系统启动、窗口寄存器、中断处理这三部分看一看sparc v8处理器的特点。

2.sparc 芯片启动

一般我们做嵌入式开发都是用C语言编写实现,但是实际情况是在系统上电的之后,一般往往会执行一段初始化的汇编代码,可以理解为系统的BIOS。对于sparc v8架构的bm3803处理器来说,地址分配的空间如下:

地址

作用

0x00000000-0x1FFFFFFF

PROM

0x20000000-0x3FFFFFFF

I/O

0x40000000-0x7FFFFFFF

SRAM

一般芯片启动后,执行的代码都是在0地址处,所以固话的代码放在PROM的0地址空间。

需要设置C语言可以执行的栈空间以及清除bss段。其中栈的布局可以参考如下:

3.寄存器

3.1 窗口寄存器

由于sparc架构集成伯克利RISC结构,所以窗口寄存器是一个非常重要的特性。也就是说,一个窗口寄存器组只对当前的程序可见。而一个寄存器窗口又包括32个无浮点的寄存器。

Register Group

Mnemonic

Register Address

global

%g0-%g7

r[0]-r[7]

out

%o0-%o7

r[8]-r[15]

local

%l0-%l7

r[16]-r[23]

in

%i0-%i7

r[24]-r[31]

其中SPARC结构规定了一共可以有N个寄存器的窗口,N=2^n(1=<n<=5),即N=2、4、8、16、32。

当执行SAVE指令的时候,会分配一个全新的串口CWP-1。当RESTORE指令的时候,则CWP+1。其中比较有特点是,两个窗口是有8个寄存器公用的,也就是上一个窗口的out为下个窗口的in。这样可以提高程序的执行效率,不用每次都处理所有的寄存器。

3.2 特殊寄存器

一般来说,sparc上的特殊寄存器需要注意的是处理器状态寄存器(Processor State Register),名称为%PSR。以及无效窗口标识(Widows Invalid Register),名称为%WIM。

其中PSR主要控制CWP窗口操作、中断处理开关、以及Trap的处理。

WIM是无效窗口,BIT0~BIT7分别对应窗口0~7,在CPU的8个寄存器窗口中只能存在一个窗口为无效窗口。

4.中断处理

在sparc处理中断和陷阱的时候,也是首先需要一个trap的地址。一般进入中断后,会进入另外的一个模式,也就是说会开辟一个新的窗口,比如我们做任务切换的时候。sparc是由软中断(TA指令)实现。SPARC架构是不支持直接对PC指针进行操作的,而是CPU在发生中断的时候会将当前的PC、NPC写到寄存器%l1,%l2寄存器中。在中断结束返回的时候,CPU自动将%l1,%l2内容写到PC、NPC。这样就实现了一个任务的切换过程。

当发生中断的嵌套的时候,也是需要通过中断栈来实现当前现场的保存。

5.总结

上述简单的介绍了一下sparc处理器的一些特点,熟悉处理器架构的朋友可以看一下和arm、mips、risc-v体系架构的设计的异同。通过学习和理解不同处理器架构的设计思想,从而更好的掌握程序设计的最佳思路。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式IoT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sparc处理器浅析
    • 1.前言
      • 2.sparc 芯片启动
        • 3.寄存器
          • 3.1 窗口寄存器
          • 3.2 特殊寄存器
        • 4.中断处理
          • 5.总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档