《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——导读

简介: 虽然高速缓存能够在多处理器中增加有效的存储器带宽,但是高速缓存结构对于管理它所需要的操作系统开销有很大的影响,这又反过来影响了系统的整体性能。


screenshot


**
前言
**
在计算机系统发展历史中的许多时期,构建整体上速度更快的系统的愿望都集中在系统的三大组成部分——CPU、存储子系统和I/O子系统——的速度都更快上面。通过提高时钟速度就可以制造出更快的CPU。通过降低存取时间就可以制造出更快的存储子系统。通过提高数据传输速率就可以制造出更快的I/O子系统。但是,随着时钟速度和传输速率的提高,要提高系统的整体速度就变得越来越困难了,因此要设计和构建这样的系统,成本也变得越来越高。随着速度的提高,传输延迟(propagation delay)、信号上升时间(signal rise time)、时钟同步和分发(clock synchronization and distribution)等都变得越发重要起来。这类高速设计的高成本更难获得有效的性能价格比。

因为受这样和那样的因素影响,系统设计人员扩大了他们的关注范围,以找出提高系统整体性能的其他途径。精简指令集计算机(Reduced Instruction Set Computer,RISC)系统的概念就是其成果之一,在RISC系统中对CPU指令集进行了简化,从而让一个低成本的快速硬件实现就能完成这些指令。另一项成果是高速缓存存储系统的开发。高速缓存通过把程序中引用最频繁的数据和指令保存在一小块高速存储器中,以此降低主存储系统的负载,从而提高系统的性能。通过增加一小块成本划算、高速度的高速缓存(而不是一个成本高、规模大的高速主存储子系统)就能加速存储器整体存取速度。采用高速缓存存储器有可能带来更快的存储器整体存取时间,这对于RISC系统来说尤为重要,因为要完成相同的任务,使用精简的指令集通常要求RISC CPU比传统的CPU体系结构取得和执行更多的指令。一般而言,RISC系统需要更高的带宽来以峰值性能运行。

通过并行运行更多台设备而不是提高任何单台设备的速度就能获得更高的I/O传输速率。这就导致了诸如廉价磁盘冗余阵列(Redundant Arrays of Inexpensive Disks,RAID)之类设备的发展,在RAID中,多块磁盘并行运行以提供更高的整体传输率。通过增加一个系统中CPU的数量来构建多处理器,这样的技术也可以用于提高CPU的速度。多处理器把系统负载分散到多个处理器上来增加整个系统的吞吐率。

多处理器和高速缓存是密切相关的。紧密耦合多处理器系统(tightly coupled multiprocessor system)有一个共享的主存储子系统,随着处理器数量的增加,它需要更高的主存储带宽,因为每个处理器在取得和执行一条独立的指令流的同时,都必须在存储器中访问一组独立的数据。将一块高速缓存和每个处理器进行耦合,从高速缓存而不是共享的主存储器来满足处理器大部分的存储器访问请求,就可以降低主存储器的负载。这是一种颇为划算的提高系统性能的途径。

虽然高速缓存能够在多处理器中增加有效的存储器带宽,但是高速缓存结构对于管理它所需要的操作系统开销有很大的影响,这又反过来影响了系统的整体性能。

总而言之,构建速度更快的计算机系统不仅仅是一件诸如提高CPU时钟速度这样的事。虽然这样的技术实际上造就了更快的系统,但是它们不一定就是经济上划算的解决方法。通过集中研究如何利用现有的系统部件来提供更高的系统性能,人们已经发现高速缓存和多处理器是划算的解决方案。因此,我们就从这里开始研究高速缓存和多处理器的体系结构,以及它们给操作系统带来的问题。

目录

**[第1章 回顾UNIX内核原理
1.1 引言](https://yq.aliyun.com/articles/102602)**
1.2 进程、程序和线程
1.3 进程地址空间
1.3.1 地址空间映射
1.4 上下文切换
1.5 内存管理和进程管理的系统调用
1.5.1 系统调用fork
1.5.2 系统调用exec
1.5.3 系统调用exit
1.5.4 系统调用sbrk和brk
1.5.5 共享内存
1.5.6 I/O操作
1.5.7 映射文件
1.6 小结
1.7 习题
1.8 进一步的读物
**[第2章 高速缓存存储系统概述
2.1 存储器层次结构](https://yq.aliyun.com/articles/102691)**
2.2 高速缓存基本原理
2.2.1 如何存取高速缓存
2.2.2 虚拟地址还是物理地址
2.2.3 搜索高速缓存
2.2.4 替换策略
2.2.5 写策略
2.3 直接映射高速缓存
2.3.1 直接映射高速缓存的散列算法
2.3.2 直接映射高速缓存的实例
2.4 双路组相联高速缓存
2.5 n路组相联高速缓存
2.6 全相联高速缓存
2.7 n路组相联高速缓存的总结
2.8 高速缓存冲洗
2.9 无缓存的操作
2.10 独立的指令高速缓存和数据高速缓存
2.11 高速缓存的性能
2.12 各种高速缓存体系的差异
2.13 习题
2.14 进一步的读物

相关文章
|
26天前
|
存储 缓存 数据库
缓存技术有哪些应用场景呢
【10月更文挑战第19天】缓存技术有哪些应用场景呢
|
26天前
|
存储 缓存 运维
缓存技术有哪些优缺点呢
【10月更文挑战第19天】缓存技术有哪些优缺点呢
|
2月前
|
存储 缓存 NoSQL
解决Redis缓存击穿问题的技术方法
解决Redis缓存击穿问题的技术方法
70 2
|
2月前
|
存储 缓存 Java
在Spring Boot中使用缓存的技术解析
通过利用Spring Boot中的缓存支持,开发者可以轻松地实现高效和可扩展的缓存策略,进而提升应用的性能和用户体验。Spring Boot的声明式缓存抽象和对多种缓存技术的支持,使得集成和使用缓存变得前所未有的简单。无论是在开发新应用还是优化现有应用,合理地使用缓存都是提高性能的有效手段。
39 1
|
3月前
|
缓存 NoSQL Java
SpringBoot的三种缓存技术(Spring Cache、Layering Cache 框架、Alibaba JetCache 框架)
Spring Cache 是 Spring 提供的简易缓存方案,支持本地与 Redis 缓存。通过添加 `spring-boot-starter-data-redis` 和 `spring-boot-starter-cache` 依赖,并使用 `@EnableCaching` 开启缓存功能。JetCache 由阿里开源,功能更丰富,支持多级缓存和异步 API,通过引入 `jetcache-starter-redis` 依赖并配置 YAML 文件启用。Layering Cache 则提供分层缓存机制,需引入 `layering-cache-starter` 依赖并使用特定注解实现缓存逻辑。
974 1
SpringBoot的三种缓存技术(Spring Cache、Layering Cache 框架、Alibaba JetCache 框架)
|
3月前
|
存储 缓存 NoSQL
【性能飙升的秘密】FastAPI应用如何借助缓存技术实现极速响应?揭秘高效Web开发的制胜法宝!
【8月更文挑战第31天】FastAPI是一个高性能Web框架,利用Starlette和Pydantic实现高效API构建。本文介绍如何通过缓存提升FastAPI应用性能,包括使用`starlette-cache[redis]`实现Redis缓存,以及缓存一致性和缓存策略的注意事项。通过具体示例展示了缓存的配置与应用,帮助开发者构建更高效的Web应用。
205 0
|
4月前
|
存储 缓存 算法
深入了解Memcached:缓存技术的利器
Memcached是一个开源的高性能分布式内存缓存系统,用于加速动态Web应用。它通过将数据库查询结果、API调用结果或其他数据缓存到内存中,减少对数据库的访问频率,从而提高应用的响应速度。本文详细介绍了Memcached的基本原理、架构、安装配置、使用方法、测试方法以及应用场景。通过Memcached,开发者可以有效提升Web应用的性能,减少数据库负载,改善用户体验。
59 5
|
3月前
|
开发框架 Unix Linux
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
50 0
|
4月前
|
存储 缓存 NoSQL
Java中的内存数据库与缓存技术
Java中的内存数据库与缓存技术
|
5月前
|
缓存 监控 NoSQL
SpringBoot配置第三方专业缓存技术jetcache方法缓存方案
SpringBoot配置第三方专业缓存技术jetcache方法缓存方案
352 1