南京大学

计算机系统基础(二):程序的执行和存储访问

图片
课程概述

本课程主要介绍可执行文件中的代码如何在CPU中执行,如何从存储器中取指令,以及如何从存储器中取数据或存结果。在本课程中,我们主要围绕以下问题进行讲解。

计算机中的CPU是如何执行程序的?

CPU中包含哪些基本的功能部件?

存放代码和数据的主存储器如何构成?

存放文件的磁盘存储器是怎么工作的?

CPU如何把一个虚拟地址转换为主存地址?

如何利用高速缓存技术加快访问存储器的速度?

 IA-32/Linux平台如何实现存储访问?

 

证书要求

1.最终成绩由小测验成绩和期末考试成绩两部分组成。

2.课程讲授共7周,每周对应一次小测验,每次小测验由10道单选题构成,每题1分,共70分。

3.期末考试占30分。

总成绩60分及以上合格,85分及以上优秀。

电子版的课程结业证书免费。纸质版认证证书收费:100元/人 。

 

 

 

预备知识

高级语言程序设计(最好有C语言程序设计的基础)

授课大纲

本课程学时共7周。


第一周 程序执行概述


本周介绍程序执行概述,首先介绍程序和指令的关系,然后介绍程序中一条指令的执行过程。我们在计算机系统基础(一)中主要是以IA-32架构来讲解程序的机器级表示的,所以,我们这里会介绍在IA-32中一条指令的执行过程,最后简单介绍一下CPU的基本功能和基本结构,包括数据通路和控制器的基本功能和结构。


第二周 主存储器组织


本周介绍存储器概述,首先介绍存储器相关的基本概念,然后介绍主存的基本结构及其性能指标。组成计算机中内存储器主要是半导体存储器,所以,接下来我们会介绍半导体存储器的组织方式,包括静态随机访问存储器和动态随机访问存储器组织。在此基础上,再介绍内存条和存储器总线的关系,最后讲解一下CPU和主存模块的连接以及CPU访问主存时的读写操作过程。


第三周 磁盘存储器


本周介绍磁盘存储器,首先介绍磁盘存储器的结构,然后介绍磁盘驱动器及其操作过程。接下来介绍磁盘存储器的组成和磁盘存储器与主机的连接以及磁盘读写操作。


第四周 高速缓存概述


本周介绍高速缓存(也就是Cache)的基本原理,首先介绍Cache在存储器层次结构中的位置,然后介绍Cache和主存的关系,以及实现Cache需要解决的问题。接下来介绍Cache和主存之间的三种映射方式,最后讲解一下Cache命中率及其与关联度之间的关系。


第五周 Cache替换算法和写策略


本周介绍高速缓存(也就是Cache)的替换算法和写策略,首先简单介绍一下Cache的三种替换算法,然后介绍Cache的写策略,也就是Cache的一致性问题。接下来介绍Cache实现中需要考虑的几个因素, 以及典型的Intel架构中的Cache实现,最后给出一个综合计算的例子,把关于Cache的一些主要知识点串联起来。


第六周 虚拟存储器


本周介绍虚拟存储器,首先简单介绍一下早期分页存储管理的基本概念,然后介绍虚拟存储管理和虚拟地址空间的概念;接下来介绍分页存储管理的实现,包括页表、地址转换和TLB等。在此基础上,介绍存储器层次结构及其访问过程,最后简单介绍一下段式和段页式存储管理的基本原理,以及存储保护的基本概念。


第七周 IA-32/Linux中的地址转换


本周介绍IA-32/Linux中的地址转换,首先 IA-32的地址转换和寻址方式,然后介绍IA-32中的段寄存器和段选择符、段描述符和段描述符表,以及Linux的全局段描述符表;在此基础上,介绍IA-32/Linux中如何将逻辑地址转换为线性地址,然后又如何将线性地址转换为物理地址的过程。最后以Intel Core i7/Linux存储系统为例,把存储器层次结构中的主要相关内容关联起来,对所学内容进行总结。

参考资料

教材:袁春风. 计算机系统基础 [M]. 北京:机械工业出版社,2014 (第5-6章)

参考书目:Randal E. Bryant, David R. O'Hallaron. 深入理解计算机系统(原书第3版)[M]. 龚奕利,贺莲译  北京:机械工业出版社,2016

常见问题

1.学习“计算机系统基础”课程时,最重要的学习方法是什么?

首先,不要死记硬背,关键是要不断将所学内容关联起来,以真正理解所学内容。

其次,要多动手实践。不明白的地方就编写一个程序,通过打印结果或利用gdb等调试工具查看机器级代码来分析。

此外,多提问和多参与讨论。真理越辩越明,在与他人的讨论过程中,往往会忽然开朗,有时,一个问题自己冥思苦想几天都想不明白,但实际上课程讨论区早就有人讨论过了,或者在讨论区一提问,马上就有人帮你解决了。

 

2.“计算机系统基础”属于硬件课程还是软件课程?

该课程涉及到其他很多课程,包括硬件课程和软件课程。它与高级语言程序设计、组成原理、汇编、编译、链接和操作系统等课程的内容有关。虽然涉及到很多其他课程的内容,但是,我们在本课程中只会讲解这些课程内容之间的关联,而不会讲解这些课程的细节内容,例如,本课程不会讲解如何实现编译器和如何实现操作系统。

 

3.《计算机系统基础》系列一共包含几门慕课?

          包含以下三门慕课:

    (1)计算机系统基础(一):程序的表示、转换与链接。

    (2)计算机系统基础(二):程序的执行和存储访问。

    (3)计算机系统基础(三):异常、中断和输入/输出