- #[[CT213 - Computer Systems & Organisation]] - No previous topic. - **Relevant Slides:** ![Lecture01.pdf](../assets/Lecture01_1662828507609_0.pdf) - - ## Traditional Classes of Computer Systems collapsed:: true - What is a **Personal Computer (PC)**? card-last-score:: 5 card-repeats:: 2 card-next-schedule:: 2022-09-23T18:28:00.836Z card-last-interval:: 4 card-ease-factor:: 2.7 card-last-reviewed:: 2022-09-19T18:28:00.836Z - A **Personal Computer** is a computer designed for use by an individual, usually incorporating a graphics display, a keyboard, and a mouse. - What is a **Server**? #card card-last-interval:: 41.44 card-repeats:: 5 card-ease-factor:: 2.18 card-next-schedule:: 2022-12-22T21:33:20.708Z card-last-reviewed:: 2022-11-11T11:33:20.709Z card-last-score:: 5 - A **server** is a computer used for running larger programs for multiple users, often simultaneously, and typically accessed only via a network. - What is a **Supercomputer**? card-last-interval:: 11.2 card-repeats:: 3 card-ease-factor:: 2.8 card-next-schedule:: 2022-10-14T15:37:52.646Z card-last-reviewed:: 2022-10-03T11:37:52.647Z card-last-score:: 5 - A **supercomputer** is a member of a class of computers with the highest performance (and cost). They are configured as servers and typically cost tens to hundreds of millions of dollars. - What is an **Embedded Computer**? #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T07:45:01.338Z card-last-reviewed:: 2022-11-14T16:45:01.338Z card-last-score:: 5 - An **embedded computer** is a computer inside another device, used for running one predetermined application or collection of software. - What are **Personal Mobile Devices**? card-last-interval:: 11.2 card-repeats:: 3 card-ease-factor:: 2.8 card-next-schedule:: 2022-10-12T21:31:08.211Z card-last-reviewed:: 2022-10-01T17:31:08.211Z card-last-score:: 5 - **Personal Mobile Devices** are small, wireless devices that connect to the internet. - They rely on batteries for power, and software is installed by downloading apps. - Conventional examples include smartphones and tablets. - What is **Cloud Computing**? #card card-last-interval:: 29.26 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-13T22:41:13.223Z card-last-reviewed:: 2022-11-14T16:41:13.223Z card-last-score:: 5 - **Cloud Computing** refers to large collections of servers that provide services over the internet. - Some providers rent dynamically varying number of servers as a utility. - What is **Software as a Service**? #card card-last-interval:: 29.26 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-13T22:47:42.790Z card-last-reviewed:: 2022-11-14T16:47:42.790Z card-last-score:: 5 - **Software as a Service** delivers software & data as a service over the internet, usually via a thing program, such as a browser. - Examples include web search & email. - - ## Computer Systems - ![image.png](../assets/image_1662829382080_0.png){:height 410, :width 414} - What is **Application Software**? #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T07:45:07.567Z card-last-reviewed:: 2022-11-14T16:45:07.567Z card-last-score:: 5 - **Application Software** consists of user-installed applications & programs. - Application Software provides services to the user that are commonly useful. - What is the purpose of the **Operating System**? #card card-last-interval:: 49.07 card-repeats:: 5 card-ease-factor:: 2.28 card-next-schedule:: 2023-01-02T21:21:34.885Z card-last-reviewed:: 2022-11-14T20:21:34.886Z card-last-score:: 3 - The **Operating System** interfaces between a user's program and the hardware, provides a variety of services, and performs supervisory functions. - What is the purpose of the **Hardware**? - The **Hardware** performs the tasks. - - ## Seven Great Ideas in Computer Organisation - ### 1. Use **Abstraction** to Simplify Design #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T10:59:55.160Z card-last-reviewed:: 2022-11-14T19:59:55.163Z card-last-score:: 5 - A major productivity technique for hardware & software is to use **abstractions** to characterise the design at different levels of representation - Lower-level details are hidden to offer a simpler model at higher levels. - ### 2. Make the **Common Case** Fast #card card-last-interval:: 29.26 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-13T22:41:18.214Z card-last-reviewed:: 2022-11-14T16:41:18.214Z card-last-score:: 5 - Making the **common case fast** will tend to enhance performance better than optimising the rare case. - The common case is often simpler than the rare case, and hence is usually easier to enhance. - ### 3. Performance via **Parallelism** #card card-last-interval:: 28.3 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-11-17T15:35:06.365Z card-last-reviewed:: 2022-10-20T08:35:06.365Z card-last-score:: 5 - Involves speeding up performance by using designs that compute operations in **parallel**. - ### 4. Performance via **Pipelining** #card card-last-interval:: 27.13 card-repeats:: 4 card-ease-factor:: 2.56 card-next-schedule:: 2022-12-11T19:29:57.240Z card-last-reviewed:: 2022-11-14T16:29:57.241Z card-last-score:: 3 - **Performance via Pipelining** is a particular pattern of **parallelism** that is so prevalent in computer architecture that it merits its own name. - ### 5. Performance via **Prediction** #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-15T02:32:12.139Z card-last-reviewed:: 2022-11-11T11:32:12.139Z card-last-score:: 5 - In some cases, it can be ^^faster on average to guess and start working^^ that to wait until you know for sure (assuming that the mechanism to recover from a misprediction is not too expensive, and your prediction is relatively accurate). - ### 6. Hierarchy of Memories #card card-last-interval:: 29.26 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-13T22:42:13.815Z card-last-reviewed:: 2022-11-14T16:42:13.816Z card-last-score:: 5 - Computer Architects have found that they can address conflicting demands with a **hierarchy of memories**. - The ^^fastest, smallest, & most expensive memory per bit^^ is at the top of the hierarchy. - The ^^slowest, largest, & cheapest per bit^^ is at the bottom of the hierarchy. - ### 7. Dependability via **Redundancy** #card card-last-interval:: 29.26 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-13T22:42:16.723Z card-last-reviewed:: 2022-11-14T16:42:16.723Z card-last-score:: 5 - Since any physical device can fail, we make systems **dependable** by including ^^redundant components^^ that can take over when a failure occurs *and* help detect failures. - - ## Hardware Organisation - What does basic computer organisation look like? #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-11-22T23:24:24.522Z card-last-reviewed:: 2022-10-20T08:24:24.523Z card-last-score:: 5 - ![image.png](../assets/image_1662830400492_0.png) - What is an **integrated circuit**? card-last-interval:: 31.36 card-repeats:: 4 card-ease-factor:: 2.8 card-next-schedule:: 2022-11-04T20:17:29.178Z card-last-reviewed:: 2022-10-04T12:17:29.178Z card-last-score:: 5 collapsed:: true - An **integrated circuit**, also called a **chip**, is a device combining dozens to millions of transistors. - ### The CPU - What is a **CPU**? #card card-last-interval:: 29.26 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-13T22:47:19.225Z card-last-reviewed:: 2022-11-14T16:47:19.226Z card-last-score:: 5 - The **Central Processing Unit (CPU)**, also called the **processor**, is the ^^active part of the computer^^, which contains the datapath & control, and which adds numbers, tests numbers, signals I/O devices to activate, and so on. - The CPU is ^^responsible for executing programs.^^ - What are the steps that the CPU takes to process programs? #card card-last-interval:: 64.01 card-repeats:: 5 card-ease-factor:: 2.52 card-next-schedule:: 2023-01-17T20:21:39.209Z card-last-reviewed:: 2022-11-14T20:21:39.209Z card-last-score:: 5 - **1. Fetch:** Retrieve an instruction from ^^program memory.^^ - **2. Decode:** Break down the instruction into parts that have significance to specific sections of the CPU. - **3. Execute:** Various portions of the CPU are connected to perform the desired operation. - **4. Write Back:** Simply "writes back" the results of the execute step ^^if necessary.^^ - ### CPU Organisation - What does the **organisation** of the CPU look like? #card card-last-interval:: -1 card-repeats:: 1 card-ease-factor:: 1.94 card-next-schedule:: 2022-11-15T00:00:00.000Z card-last-reviewed:: 2022-11-14T20:12:31.318Z card-last-score:: 1 - Processors are made up of: - A **Control Unit** - **Execution Unit(s)** - A **Register File** - ![image.png](../assets/image_1662830846361_0.png){:height 339, :width 418} - - #### Control Unit - What does the **Control Unit** do? #card card-last-interval:: -1 card-repeats:: 1 card-ease-factor:: 2.56 card-next-schedule:: 2022-11-15T00:00:00.000Z card-last-reviewed:: 2022-11-14T16:48:27.996Z card-last-score:: 1 - The **Control Unit** ^^controls the execution^^ of the instructions stored in main memory. - It ^^retrieves & executes^^ them. - What is the architecture of the control unit? #card card-last-interval:: -1 card-repeats:: 1 card-ease-factor:: 2.08 card-next-schedule:: 2022-11-15T00:00:00.000Z card-last-reviewed:: 2022-11-14T20:18:27.653Z card-last-score:: 1 - The control unit contains a **fetch unit**, a **decode unit**, and an **execute unit**. - It also contains two special registers: - **Program Counter (PC):** keeps the address of the next instruction - **Instruction Register (IR):** keeps the instruction being executed - ![image.png](../assets/image_1662837864357_0.png){:height 266, :width 550} - - ### The Memory Subsystem collapsed:: true - How is the memory divided into storage locations? #card card-last-interval:: 29.26 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-13T22:41:41.185Z card-last-reviewed:: 2022-11-14T16:41:41.185Z card-last-score:: 5 - Memory is divided into a set of storage location which can hold data. - Locations are numbered. - Addresses are used to tell the memory which location the processor wants to access. - What are the two hierarchies of memory? #card card-last-interval:: 10.97 card-repeats:: 3 card-ease-factor:: 2.56 card-next-schedule:: 2022-11-25T15:41:01.018Z card-last-reviewed:: 2022-11-14T16:41:01.018Z card-last-score:: 5 - **1. Nonvolatile / ROM (Read Only Memory):** Read only memory. - Used to store the BIOS and / or a *bootstrap* or *bootloader* program. - **2. Volatile / RAM (Random Access Memory):** Read / Write memory. - Also called **Primary Memory**. - Used to hold the programs, operating system, and data required by the computer. - #### Primary Memory - How is primary memory connected to the CPU? #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-15T02:38:12.876Z card-last-reviewed:: 2022-11-11T11:38:12.876Z card-last-score:: 5 - **Primary Memory** is directly connected to the Central Processing Unit of the computer. - It must be present for the CPU to function correctly. - What are the three types of Primary Storage? #card card-last-interval:: -1 card-repeats:: 1 card-ease-factor:: 2.08 card-next-schedule:: 2022-11-15T00:00:00.000Z card-last-reviewed:: 2022-11-14T16:35:22.469Z card-last-score:: 1 - **1. Processor Register:** - Contains information that the CPU needs to carry out the current instruction. - **2. Cache Memory:** - A special type of internal memory used by many CPUs to increase their **throughput**. - **3. Main Memory:** - Contains the programs that are currently being run and the data that the programs are operating on. - What is the **address width**? #card card-last-interval:: 47.41 card-repeats:: 5 card-ease-factor:: 2.28 card-next-schedule:: 2023-01-07T22:09:51.569Z card-last-reviewed:: 2022-11-21T13:09:51.569Z card-last-score:: 3 - The **address width** is the number of bits used to represent an address in memory. - The **width** limits the amount of memory that a computer can access. - Most computers use a **64 bit address**, which means that the maximum number of locations is 2^{64} \approx 16 billion gigabytes. - What operations does the memory subsystem support? #card card-last-interval:: 28.3 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-12T23:44:58.031Z card-last-reviewed:: 2022-11-14T16:44:58.031Z card-last-score:: 3 - The memory subsystem supports two operations: - **Load** (or read) + the address of the data location to be read. - **Store** (or write) + the address of the location & the data to be written. - How many bytes may the memory system read or write at a time? #card card-last-interval:: 29.26 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-13T22:41:30.763Z card-last-reviewed:: 2022-11-14T16:41:30.764Z card-last-score:: 5 - Read & Write operations ^^operate at the width of the system's data bus^^, usually 32 bit or 64 bit. - How is a section of memory addressed? #card card-last-interval:: -1 card-repeats:: 1 card-ease-factor:: 2.8 card-next-schedule:: 2022-11-15T00:00:00.000Z card-last-reviewed:: 2022-11-14T16:43:58.787Z card-last-score:: 1 - The address ^^contains only the address of the lowest byte^^, and a number of bytes to be read is specified, e.g., 4 bytes. - #### Memory Alignment & Words of Data - When the computer's **word size** is 4 bytes, the data to be read should be at a memory address which is ^^some multiple of four.^^ - When this is not the case, e.g., the data starts at address 14 instead of 16, then the computer has to read two or more 4 byte chunks and do some calculation before the requested data has been read, or it may generate ^^an alignment fault.^^ - Even though the previous data structure end is at, for example, address 13, the next data structure should start at address 16. Two **padding bytes** are inserted between the two data structures at addresses 14 & 15 to align the next data structure at address 16. - ### The I/O Subsystem - What are **input devices**? #card collapsed:: true card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T07:38:20.415Z card-last-reviewed:: 2022-11-14T16:38:20.415Z card-last-score:: 5 - Anything that feeds data into the computer. - What are **output devices**? #card collapsed:: true card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T07:38:27.684Z card-last-reviewed:: 2022-11-14T16:38:27.684Z card-last-score:: 5 - Display / transmit information back to the user. - What does the **I/O Subsystem** contain? #card collapsed:: true card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T07:38:17.443Z card-last-reviewed:: 2022-11-14T16:38:17.443Z card-last-score:: 5 - The **I/O Subsystem** contains the devices that the computer uses to communicate with the outside world and to store data. - How do I/O devices communicate with the processor? #card collapsed:: true card-last-interval:: 10.24 card-repeats:: 3 card-ease-factor:: 2.32 card-next-schedule:: 2022-11-24T21:49:01.266Z card-last-reviewed:: 2022-11-14T16:49:01.266Z card-last-score:: 3 - I/O devices usually communicate with the processor using the **I/O Bus**. - PCs use the **PCI Express (Peripheral Component Interconnect Express)** bus for their I/O bus. - The Operating System needs a **device driver** to access a given I/O device. - What is a **device driver**? #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T07:43:53.294Z card-last-reviewed:: 2022-11-14T16:43:53.295Z card-last-score:: 5 - A **device driver** is a program that allows the OS to control an I/O device. - #### I/O Read / Write Operations - The I/O read & write operations are similar to the memory read & write operations. - How does the processor address I/O devices? #card card-last-interval:: 12.96 card-repeats:: 4 card-ease-factor:: 1.8 card-next-schedule:: 2022-11-27T19:18:57.241Z card-last-reviewed:: 2022-11-14T20:18:57.241Z card-last-score:: 3 - A processor may use: - **Memory-Mapped I/O:** when the address of the I/O device is in the **direct memory space**, and the ^^sequences to read/write data in the device are the same as the memory read/write sequences.^^ - **Isolated I/O:** similar process to Memory-Mapped I/O, but the processor has a ^^second set of control signals to distinguish between a **memory access** and am **I/O access**.^^ - What is **IO/M**? #card card-last-interval:: 19.01 card-repeats:: 4 card-ease-factor:: 2.18 card-next-schedule:: 2022-12-03T20:02:23.177Z card-last-reviewed:: 2022-11-14T20:02:23.177Z card-last-score:: 3 - **IO/M** is a **status signal** in **Isolated I/O** that denotes whether the read/write operation pertains to the memory or to the I/O subsystem. - When the **signal is low** (IO/M = 0), i.e., IO/M is `true`, it denotes **memory-related operations**. - When the **signal is high**, (IO/M = 1), i.e., IO/M is `false`, it denotes an **I/O operation**. - - - - ## Programs - What are programs? #card card-last-interval:: 23.43 card-repeats:: 4 card-ease-factor:: 2.42 card-next-schedule:: 2022-12-08T02:39:39.879Z card-last-reviewed:: 2022-11-14T16:39:39.879Z card-last-score:: 3 - Programs are ^^sequences of instructions^^ that tell the computer what to do. - To the computer, a program is made out of a ^^sequence of numbers that represent individual operations.^^ - These operations are known as **machine instructions** or just **instructions**. - A set of instructions that a processor can execute is known as an **instruction set**. - ### Program Development Tools collapsed:: true - What is a **high-level programming language**? #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T07:43:16.217Z card-last-reviewed:: 2022-11-14T16:43:16.218Z card-last-score:: 5 - A **high-level programming language** is a ^^portable language^^ such as C that is ^^composed of words & algebraic notation^^ that can be translated by a compiler into **assembly language**. - What is a **compiler**? #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T07:38:38.718Z card-last-reviewed:: 2022-11-14T16:38:38.719Z card-last-score:: 5 - A **compiler** is a program that translates statements in a given high-level language into assembly language statements. - What is an **assembler**? #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-18T07:43:18.677Z card-last-reviewed:: 2022-11-14T16:43:18.677Z card-last-score:: 5 - An **assembler** is a program that translates symbolic, assembly language versions of instructions into the ^^binary version.^^ - What is **Assembly Language**? #card card-last-interval:: 108 card-repeats:: 5 card-ease-factor:: 3 card-next-schedule:: 2023-03-02T20:22:13.316Z card-last-reviewed:: 2022-11-14T20:22:13.317Z card-last-score:: 5 - **Assembly Language** is a ^^symbolic representation^^ of **machine instructions**. - What is **Machine Language**? #card card-last-interval:: 19.01 card-repeats:: 4 card-ease-factor:: 2.18 card-next-schedule:: 2022-12-03T20:02:29.114Z card-last-reviewed:: 2022-11-14T20:02:29.114Z card-last-score:: 3 - **Machine Language** is a ^^binary representation^^ of **machine instructions**. - What is an **instruction**? #card card-last-interval:: 28.3 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-12T23:49:56.176Z card-last-reviewed:: 2022-11-14T16:49:56.176Z card-last-score:: 3 - An **instruction** is a command that the computer hardware understands & obeys. - - ## Operating Systems - What is an **Operating System**? #card card-last-interval:: 9.68 card-repeats:: 3 card-ease-factor:: 2.42 card-next-schedule:: 2022-11-24T08:36:28.473Z card-last-reviewed:: 2022-11-14T16:36:28.474Z card-last-score:: 5 - Possible definition: a program that runs on the computer that ^^knows about all the hardware^^ and usually ^^runs in privileged mode^^, having ^^access to physical resources that user programs can't control^^, and has the ^^ability to start & stop user programs.^^ - The OS is responsible for managing the physical resources of complex systems, such as PCs, workstations, mainframe computers, etc. - It is also responsible for ^^loading & executing programs^^ and ^^interfacing with the users.^^ - Usually, there is no operating system for **small embedded systems**. - Computers designed for one specific task. - - ### Multiprogramming - What is **Multiprogramming**? #card card-last-interval:: 28.3 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-11-17T15:33:42.952Z card-last-reviewed:: 2022-10-20T08:33:42.952Z card-last-score:: 5 - **Multiprogramming** is a technique that allows the system to ^^present the illusion that multiple programs are running on the computer simultaneously.^^ - Many multiprogrammed computers are **multiuser**. - They allow multiple users to be logged in at a time. - How is multiprogramming achieved? #card card-last-interval:: 28.3 card-repeats:: 4 card-ease-factor:: 2.66 card-next-schedule:: 2022-12-12T23:46:17.294Z card-last-reviewed:: 2022-11-14T16:46:17.294Z card-last-score:: 3 - Multiprogramming is achieved by ^^switching rapidly between programs.^^ - How does the processor decide which process to execute next? #card card-last-interval:: 23.43 card-repeats:: 4 card-ease-factor:: 2.42 card-next-schedule:: 2022-12-08T02:44:23.286Z card-last-reviewed:: 2022-11-14T16:44:23.287Z card-last-score:: 5 - **FCFS - First Come, First Served:** processes are moved to the CPU in the order in which they arrive. - **SJN - Shortest Job Next:** looks at all processes in the **ready state** and dispatches the one with the smallest service time. - **Round Robin:** distributes the processing time equitably among all ready processes. - ### Context Switching - What is a **Context Switch**? #card card-last-interval:: 64.01 card-repeats:: 5 card-ease-factor:: 2.52 card-next-schedule:: 2023-01-24T13:09:58.962Z card-last-reviewed:: 2022-11-21T13:09:58.962Z card-last-score:: 5 - When a program timeslice ends, the OS stops it, removes it, and gives another program control over the processor. - This is a **context switch**. - How does the OS go about a Context Switch? #card card-last-interval:: 15.05 card-repeats:: 4 card-ease-factor:: 1.94 card-next-schedule:: 2022-11-29T17:40:02.859Z card-last-reviewed:: 2022-11-14T16:40:02.859Z card-last-score:: 3 - copies the current program register file into memory - restores the contents of the next program's register file into the processor - starts executing the next program - From the program point of view, ^^no program can tell that a context switch has been performed.^^ - ### Protection - Three rules of Protection in multiprogrammed computers: #card card-last-interval:: 29.21 card-repeats:: 5 card-ease-factor:: 1.94 card-next-schedule:: 2022-12-17T00:35:54.999Z card-last-reviewed:: 2022-11-17T19:35:55.000Z card-last-score:: 3 - 1. The result of any program running on the multiprogram computer ^^must be the same as if the program was the only program running on the computer.^^ - 2. Programs ^^must not be able to access other programs' data^^ and must be confident that their data will not be modified by other programs (for security and privacy). - 3. Programs ^^must not interfere with other programs' use of I/O devices.^^ - How is protection achieved? #card card-last-interval:: 15.05 card-repeats:: 4 card-ease-factor:: 1.94 card-next-schedule:: 2022-11-29T21:01:17.902Z card-last-reviewed:: 2022-11-14T20:01:17.902Z card-last-score:: 3 - Protection is achieved by the ^^operating system having full control over the resources of the system (processor, memory, and I/O devices)^^ through: - **Privileged Mode:** the operating system is the only one that can control the physical resources it executes in privileged mode. - User programs execute in **user mode**. - **Virtual Memory:** each program operates as if it were the only program on the computer, occupying a full set of the address space in its virtual space. - The OS is *translating* memory addresses that the program references into physical addresses used by the memory system. - - - **Next Topic:** [[Programming Models]]