数据结构是如何装入CPU寄存器的?
我们在之前很多文章的讲解中涉及了CPU与寄存器,然后有同学问了这样一个问题:既然CPU内部的寄存器数量有限,容量有限,那么我们使用的庞大的数据结构是怎样装入寄存器供CPU计算的呢?
这篇文章就为你讲解一下这个问题。
内存与数据
真正有用的程序是离不开数据的,比如一个int、一个float等,这些都是非常简单的数据。
当然也有非常复杂的数据,这样的数据通常在内存中以数据结构的形式组织起来,比如你创建了一个数组、一个链表、创建了一棵树、一张图,就像这样:
那么很显然这些数据存放在内存中,而且这些数据在不同的场景下有不同的大小,从数B、数KB到数百GB都有可能,与此同时,CPU内部的寄存器数量是固定的,容量也是极其有限的,那么CPU是如何利用有限的资源操作庞大的数据结构呢?
要回答这一问题,我们需要要认识一位农夫,因为他不生产数据,他只是数据的搬运工,这位农夫就是
搬运数据的机器指令
你没有看错,这位农夫就是我们之前多次提到的机器指令。
机器指令中除了负责逻辑运算、执行流控制、函数调用等指令外,还有一类指令,这类执行只负责和内存打交道,典型的就是精简指令集架构中的LoadStore机器指令,即内存读写指令(复杂指令集没有单独的内存读写指令)。
原来,从宏观上看的话,存放在内存中的数据,比如一个数组,可能会非常庞大,但是具体到代码,每一个步骤操作的数据又会非常简单,就像这样:inthugearrnewint〔1102410241024〕;
我们创建了一个长度为1G的数组,每个int4字节,则这个数组的大小就是4GB,这显然是一个很庞大的数组。
对于这样的数据,我们通常都会怎么使用呢?
最常见的情况可能是遍历一边,然后对每个字符进行一个简单操作,这里以计算数组之和为例:longintsum0;for(inti0;i1102410241024;i){sumhugearr〔i〕;}
虽然整个数组多达4GB,但具体到每一步我们一次只能操作一个元素,就像这里的:
sumhugearr〔i〕;
这行代码翻译成机器指令可能是这样的,我们假设此时i为100:
loadr0100(r2)
addr1r1r0
(注意,实际当中编译器不会傻傻的生成100这样的常数,这里代码仅用来方便讲解问题)。
第一行指令中数组首地址存放在寄存器r2中,100(r2)表示数组首地址100,这样我们就能得到hugearr〔100〕的地址了,然后将该地址中的值利用load指令加载到寄存器r0中。
第二行就简单多了,r1寄存器中保存的是sum的值,该行指令执行过后r1中的值就已经加上了hugearr〔100〕。
现在你应该能看出来了吧,虽然我们不能把整个数组加载到寄存器供CPU计算,但这其实是没有必要的,因为我们一次只能操作数组中的一个元素,我们只需要把这一个元素加载到寄存器就足矣了。
对于其它复杂的数据结构也是同样的道理,无论多么复杂的数据,代码对其一次的操作都是很简单很微小的,这一微小的操作使用的基本元素都可以通过内存读写指令加载到寄存器,修改完后再写回内存。
编译器
现在你应该知道了为什么CPU内部那么少的寄存器能操作内存中庞大的数据结构,实际上由于内存中的数据要远大于CPU寄存器的容量,因此编译器必须精心挑选,好让那些经常使用的数据放到寄存器中的时间更长一点,这样可以减少内存读写次数。
在上面的示例中,r2寄存器保存的是hugearr这个数组在内存中的起始地址,那么这个数据应该放到寄存器中,因为后续遍历到的每一个元素都要用到该地址,这项工作就是编译器来完成的。
编译器把那些经常使用的数据放到寄存器,剩下的放到内存中,然后利用内存读写指令在寄存器和内存之间来回搬运数据。
总结
通过本文不难发现,实际上我们没有必要一次性把整个数据全部装到CPU寄存器中,而是用到哪些才装载哪些。
在最细粒度的操作中,依赖的操作数都可以直接加载到内存,这通常是由内存读写机器指令来完成的。
我是小风哥,希望这篇文章对大家理解CPU与寄存器有所帮助。
来源:https:mp。weixin。qq。coms?bizMzg4OTYzODM4Mwmid2247486030idx1sn83d02968fbf0d5298a021616f4571b76utmsourcetuicoolutmmediumreferral
小学生观大海作文400字范文站在软软的沙滩上,抬眼望去,蔚蓝色的天空里悬浮着几朵绸缎般的白云,一望无际的海面波涛滚滚。接下来品学网小编整理了小学生观大海作文,一起来看看吧!小学生观大海作文篇一海,是……
大学生国家励志奖学金申请书国家励志奖学金(NationalEndeavorFellowship),助学金的一种。下面是小编整理的大学生国家励志奖学金申请书,欢迎大家参考!【1】大学生国家励志奖学金……
长江存储推出UFS3。1高速闪存芯片华为在欧洲专利局申请量居富士康印度半导体制造厂进入选址阶段据外媒报道,印度韦丹塔(Vedanta)集团近日透露了其半导体领域投资计划的更多细节,称其与OEM巨头富士康合资在印建立半导体制造工厂的……
我的爸爸就是这样一个人作文我敬佩的爸爸,因为他在工作繁忙时,还关心我的学习。自从爸爸担任主任后,工作更加繁忙了,每天睡的时间更少了,每天最多只能睡五、六个小时。有一天晚上,我三更半夜起床拉尿,发现……
怒当连续剧Twitter总导演,马斯克再砸400亿美金如果交易失败,我会重新考虑自己作为大股东的地位(抛售股票)。本文来自微信公众号:壹番财经(ID:financeyifan),文郑亦久。上个月伊隆马斯克曾经在Twit……
网商银行将暂停支付宝提现?回应来了4月19日,针对近日网商银行将逐步暂停支付宝提现或转入二类账户业务引关注一事,网商银行对北京商报表示,网商银行基于业务规则调整,逐步停止支付宝余额转入的功能,同时,仅支持本人绑……
我的三项特长作文范文还在羡慕别人的特长吗?还在为自己没有特长而苦恼吗?其实,每个人都有自己的特长你有什么特长?如果我以同样的问题对十个人提问,我相信,有九个人会告诉我:运动、唱歌或画画,每每……
小学生作文小狗的幸福在我们小区的花坛边上有一只肥狗,它肥的像一只猪,头上的毛都是竖起来的,超帅。我奶奶给它做了一件衣服,,让它在冬天可以暖活点儿,直到春天才给它脱下来,到了夏天给它喝冷的白开水。我……
写军训感受的学生作文篇一:写军训感受的作文军人精神是一个叫人感到严肃的词,开始新的学习生活之前,我们不免要严肃一回。于是我们期待又恐惧的军训之旅终于到来,匆匆开始。听着广播里放着嘹亮的……
描写大自然环境作文大自然的环境需要我们每人去保护和爱护的,下面请欣赏小编提供的大自然环境作文!描写大自然环境作文【1】每天,只要你细心倾听,就会听到大自然的声音。你听,那是什么声音?我听到……
数字藏品市场持续升温山东首个国有数字藏品交易服务平台或将于下财联社区块链日报(北京,记者董宇佳)讯,近日,山东首个国有数字藏品交易服务平台海豹数藏项目正式启动建设,由山东省互联网传媒集团和山东文化产权交易所联手打造。区块链日报记者……
的成功不是偶然是必然如果当年张一M接受了T讯的投资,你们说还会不会有如日中天的头条戏?你会觉得,哇!JD获得T讯的投资发展的不是很好吗?JD的核心业务是电商和物流,他拿到T讯的投资除了钱之外,身还……
精选小学生军训作文500字九篇无论是身处学校还是步入社会,大家都写过作文吧,作文是由文字组成,经过人的思想考虑,通过语言组织来表达一个主题意义的文体。那么,怎么去写作文呢?以下是小编精心整理的小学生军训作文……
学习大数据跟性别没有关系大部分搞技术都是男生,很多人觉得这个是男生专属的行业。其实不是这样的,男生女生都可以胜任这个工作。对于大数据行业来说,没有性别要求,这个往往是我们自己自认为的,一些软件企业在招……
王毅同巴林外交大臣举行会谈中方愿加强双方5G通信电子商务数字据外交部网站,1月11日,国务委员兼外长王毅同巴林外交大臣扎耶尼在江苏无锡举行会谈。扎耶尼首先转达哈马德国王和萨勒曼王储对中国领导人的亲切问候,祝愿中国繁荣昌盛。扎耶尼说……
星神7逛了半天,星麟终于找到了一个还是华贵但价钱也相对来说较便宜的酒店。付了几枚金币后,星麟拿到了房间的钥匙,他一间一间地找着自己的房间,终于在一个不起眼的角落找到了,打开门,星麟把……
月色初一作文转过朱红楼阁,月光低洒在绮窗前,照到床上的我惆怅无眠。看着朦胧的月色,想起了苏轼的《水调歌头》:明月几时有?把酒问青天。不知天上宫阙,今夕是何年。我欲乘风归去,又恐琼楼玉……
工信部四方面工作加强动力电池全生命周期溯源管理光明网讯(记者张慕琛)1月12日,工业和信息化部召开新闻发布会,介绍2021年汽车工业发展情况,工信部装备工业一司司长王卫明参加本次发布会。王卫明介绍,随着我国新能源汽车……
2021年中考命题作文写作方法近年来全命题作文的命题内容呈现出丰富多彩的倾向:或贴近考生生活关注个体成长,或启迪考生思考人生哲理,或引导考生聚焦社会热点hellip;hellip;丰富多样的命题,给考生作文……
家,是父亲的自行车从小就喜欢在爸爸背上,其实是喜欢坐爸爸的自行车。每当门外响起一串清脆的铃声,我就马上咆出去迎接父亲,然后被父亲抱上车,一路按着铃回家,铃声在空气中回落。爱,渗满车轮滚过的……
寒假日记450字范文寒假来临了,在寒冷而又美丽的冬天里,小朋友们最盼望的就是下雪。以下是寒假日记450字范文,欢迎阅读!寒假日记450字范文一雪,这可爱的小天使,不知何时,已纷纷扬扬飘飘洒洒……
暑假生活看,是彩虹!当流星划过天际的时候,我错过了许愿;当昙花绽放蓓蕾的时候,我错过了拍相。但是,我唯独没有错过欣赏风雨后的彩虹。mdash;mdash;题记2016年6月20日洒脱从容……
去看电站三年级作文今天下午,我放假了。爸爸妈妈正好可以抽出空来,他们就带我去马家滩看那里正在兴建的水电站。我们从土黄街道出发,往樊哙方向的公路一直朝前走。一路上,我们一边吃着零食,一边天南……
关于淘宝和天猫融合淘宝验号黑科技尽在黑号库有问我关于淘宝和天猫融合这个事情怎么看还怎么看,这不显然的要一致对外,不要再窝里斗了,以前淘宝发育的好好的,就被天猫抽血,抽的都低血糖了,半路莫名其妙又杀出来个拼多多把淘……