当前位置:课程学习>>第四章  存储器>>知识讲解>>你问我答



同学们,本栏目是对你们学过的知识和生活中常见问题的归纳。其中,有一些共性问题,也许你会需要哦!

让我来帮你解决常见问题!

1.听说寄存器比存储器速度要快,为什么不制造全是寄存器的CPU,把存储器全用寄存器代替?

回答:

简而言之,贵。

复杂一点说,每种技术方案都有其优点和缺点,或者说有不同的适用条件,适合于解决不同的技术问题,满足不同的需求。每种存在的技术方案,包括特别古老的,在当时当地,甚至以后的某种条件,也具有特别的价值。

寄存器、Cache(又称高速缓存)、内部存储器、外部存储器(包括硬盘、光盘、U盘等),速度递增,同时单位容量的价值递减。在物理尺寸上,单位容易的物理尺寸也呈递减趋势。

此外,寄存器是易失部件,当断电以后,数据和代码全部丢失。所以,需要像ROM这样的出厂固化器件启动,需要像EPROM或硬盘这样的部件存储我们写的代码或机器码。

有的同学可能还会质疑,在特殊的场景下,为什么不能用全寄存器的CPU呢?答案有两点。第一,有很多寄存器的CPU是确实存在的,51系列单片机及变种中,有些型号的寄存器非常多,甚至多到像存储器一样只用数字区别,而不使用像EAX、EBX这种字母的名字。第二,是否有符合我们期待的产品,不仅取决于我们的需求,而且取决于我们的需求是否与生产生活中的具有一定规模的需求相一致。即,只有值得量产的产品,其价格才能降低到进入我们侯选部件的程度。如果作为工程师,我们所需要的部件是定制的产品,那么我们据此所生产的产品的价格将非常容易超过解决客户需求所带来的价值。

2.为什么需要字扩展、位扩展这样的方式,直接生产或购买大容易的存储器不好么?

回答:

事实上,无论是机器码、伪指令,还是DOS功能调用和BIOS功能调用,在教材和课程中,只提及了一小部分。更多的内容,还需要同学们在学习的过程中,在阅读他人代码和在实践项目中自行查阅手册。查阅手册(manual)、规范(specification)、文档(docs)、芯片的datasheet,是工程技术人员需要尽早训练的基本技能。

3.为什么示例代码在我的机器上编译会有错误呢?

回答:

简而言之,贵。

我们所需要的存储器容量,是刚好比代码段、数据段、堆栈段大一点点,不必过多。针对某种尺寸定制,比按规格批量生产,浪费其中一小部分,比这样的方案的成本更高。在工业生产中,定制的成本会比量产高出若干数量级。定制的程序,如果不能批量销售,其成本就完全由定制客户承担,要么价格非常高,要么质量较低。

我们所需要的存储器容易,可以由若干个量产的存储器芯片经过简单组合扩展出更大的符合我们要求的容量。这样在成本和稳定性上都是较好的选择。通过若干电阻组合得到符合要求的电阻,通过一些C语言内置函数组成形成新的函数和功能,是工程中常用的方法。

进入实践活动