当前位置: 首页 > news >正文

一文带你了解LoongArch自主指令系统

b0e42573775cb67451dcbebcda55ceb4.gif

f8d59564108f2997790f1d45d7a47593.png

导读:指令系统是软硬件的接口,程序员根据指令系统设计软件,硬件设计人员根据指令系统实现硬件。指令系统包括对指令功能、运行时环境(如存储管理机制和运行级别控制)等内容的定义,涉及软硬件交互的各个方面内容。 

2cc23e29e913e1c48437094eef475469.png

《计算机体系结构基础(第3版)》中在指令系统举例时采用了龙芯团队在2020年推出的全自主LoongArch指令系统。

c051677f17e6a1bc381fd53369bc4f04.png

LoongArch作为一款新型的RISC指令系统,其摒弃了传统指令系统中部分不适应当前软硬件设计技术发展趋势的陈旧内容,吸纳了近年来指令系统设计领域诸多先进的技术发展成果,有助于硬件实现高性能低功耗的设计,也有利于软件的编译优化以及操作系统、虚拟机的开发。

LoongArch指令系统在用户态指令和系统态两个方面都进行诸多改进优化。例如,在用户态指令方面,引入基于PC的运算指令并为间接跳转指令添加立即数偏移,同时增加相对PC跳转指令的偏移范围,这些调整将显著改善位置无关代码中长跳转和数据访问的指令(序列)的执行效率,并且能够大幅度减小GOT表的规模,从而降低因GOT表规模过大带来的维护和访问开销;增加原子访存修改指令,解决传统LL/SC指令在大规模并发执行情况下失效重试开销急剧增加的问题;同时由硬件负责所有流水线冲突的处理,允许普通访存指令的地址非对齐访问,由硬件维护指令和数据Cache之间的数据一致性。这些功能简化了软硬件的界面,降低了应用迁移的成本。在系统态方面,取消地址空间的固定分段方式以及地址段与特权等级、映射方式间的固定绑定,代之以单一平整(flat)寻址空间且所有存储管理配置信息软件均可动态调整;增加控制寄存器的原子修改支持以简化系统软件实现。大幅度拓展核内控制寄存器寻址空间为指令系统核心态部分的后续演进解除束缚;计时系统的计时频率恒定,不再随处理器核频率变化而变动,消除处理器动态功耗管理启用后系统计时系统的额外维护开销;规范核外控制器并使用独立的寻址空间,将各种多核多路系统的底层硬件信息封装为固定统一格式呈现给软件。

LoongArch指令系统的另一个重要特色是其二进制翻译扩展。LoongArch的二进制翻译扩展提供了百余条指令和一些系统资源来支持软件实现高效的二进制翻译。例如,把X86指令翻译为RISC类的指令集有个影响翻译效率的因素:eflags标志位处理。因为X86指令集中,一个运算指令除了产生运算结果,还会同时产生是否进位、是否溢出等多个标志位。完全模拟这样的一条指令的语义一般需要30条以上常规RISC指令。LoongArch提供了一系列专门指令用于产生和使用相应的标志位,在保持RISC指令风格的同时消除了这个瓶颈。目前业界最先进的二进制翻译系统可以实现80%左右的翻译运行效率,LoongArch致力于通过深度的软硬件协同进一步提升效率,实现多个主流指令集到龙芯指令集几乎无损的翻译,最终达到“消灭指令集”或者说软件定义指令集的目的。

通过阅读《计算机体系结构基础(第3版)》一书,读者不仅能够系统性学习到计算机体系结构学科的关键基础概念,还可以从体系结构学科知识要点构成的视角,了解LoongArch指令系统的基础内容和主要特色。可作为开发者初次学习LoongArch指令系统时的一本优秀的参考书籍。

RECOMMEND

推荐阅读

935511535a2560820cc12a604be732f4.png

01

计算机体系结构基础(第3版 )

9618a16b5cdc2bf3d67454ce51a78c2a.png

作者:胡伟武等

龙芯中科胡伟武领衔撰写

龙芯开源LoongArch版,学会造计算机!

从硬件工程师的角度理解软件,从软件工程师的角度理解硬件!

推荐理由

本书由国内从事微处理器设计的一线科研人员编写而成。作者从微处理器设计的角度出发,充分考虑计算机体系结构的学科完整性,强调体系结构、基础软件、电路和器件的融会贯通。全书共分12章,包括指令系统结构、计算机硬件结构、CPU微结构、并行处理结构、计算机性能分析等主要内容,重点放在作为软硬件界面的指令系统结构,以及包含CPU、GPU、南北桥协同的计算机硬件结构上。

ce7a5712e76455a5913198014e64447b.png

02

CPU设计实战

450b12c2dc549dd0f9d40b2c75348484.png

作者:汪文祥、邢金璋

龙芯中科技术股份有限公司首席工程师汪文祥作品

一本书带你从零开始设计自己的CPU

推荐理由

深入剖析CPU设计与开发的关键环节;从零开始构建一个功能逐步完善的CPU;全面培养CPU设计的工程化思维与实战能力。

本书作者从事CPU产品自主研发工作近20年,在CPU设计方面积累了丰富的经验,并一直尝试在教学过程中将这些经验转化为教学内容,探索一条培养CPU设计人才的行之有效的途径。本书面向初学者,以实战的方式带领读者了解CPU设计的流程,并从零开始逐步开发出自己的CPU。本书将计算机组成与体系结构的理论知识和工业实践充分结合,使读者在实际的CPU设计与开发过程中更加深入地理解计算机系统的工作原理,掌握CPU设计理念、方法和技术。

d6384ca95ca85360747b3712b7c49091.gif

7c6a051c8437a84c32c8c0b56e171c49.png

扫码关注【华章计算机】视频号

每天来听华章哥讲书

518807c843e27f01d86698e687db9cb4.gif

更多精彩回顾

书讯 | 1月书讯(下)| 2022年的第一本书

书讯 | 1月书讯(上)| 2022年的第一本书

资讯 | 重磅!达摩院发布2022十大科技趋势

书单 | 6本书,读懂2022年最火的边缘计算

干货 | Flink1.14.2发布,除了log4j漏洞你还需要关注什么?

收藏 | 终于有人把ROS机器人操作系统讲明白了

上新 | 【新书速递】金融领域可解释机器学习模型与实践

赠书 | 【第88期】这10本硬核技术书,带你读懂5G、物联网和边缘计算,玩转元宇宙

705d5bec42254941385c20a64e01a370.gif

7893283a4ec9d0980e09c5ce93660169.gif

点击阅读全文购买

相关文章:

  • 2021年数据中台行业十大关键词
  • 测试工程师的未来发展方向在哪里?
  • 一个案例讲明白!如何更安全地实现数据备份和恢复
  • 省政协委员、南京大学人工智能学院院长周志华: 科研学习探索最重要的是“兴趣”和“勤奋”...
  • 为什么现在还有985高校给大一上C语言课?
  • 如何用数字化构建企业的“韧性”?
  • 前端应用和产品逻辑的核心:交互流
  • 2月书讯 (上)| 新年到,新书到!
  • 2月书讯(下)| 新年到,新书到!
  • Three.js 的 3D 粒子动画:群星送福
  • 如何平衡存储系统的一致性和可用性?
  • 浅谈压缩算法的那些事儿
  • 终于有人把SaaS讲明白了
  • 【第90期】关于数据分析师的学习路线,这是我见过最全面的
  • 未来 5 年,数据中台将有这 5 个重要趋势
  • [数据结构]链表的实现在PHP中
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • css的样式优先级
  • eclipse(luna)创建web工程
  • GraphQL学习过程应该是这样的
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaScript设计模式系列一:工厂模式
  • JS专题之继承
  • RxJS: 简单入门
  • SAP云平台里Global Account和Sub Account的关系
  • tab.js分享及浏览器兼容性问题汇总
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 利用DataURL技术在网页上显示图片
  • 聊聊directory traversal attack
  • 爬虫模拟登陆 SegmentFault
  • 我的面试准备过程--容器(更新中)
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #QT(智能家居界面-界面切换)
  • #大学#套接字
  • #微信小程序(布局、渲染层基础知识)
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (30)数组元素和与数字和的绝对差
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)http协议
  • **python多态
  • *Django中的Ajax 纯js的书写样式1
  • .NET Core 成都线下面基会拉开序幕
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET6实现破解Modbus poll点表配置文件
  • .net分布式压力测试工具(Beetle.DT)
  • /proc/interrupts 和 /proc/stat 查看中断的情况