컴퓨터구조 2007년 2학기 계명대학교 컴퓨터공학과
제1장 컴퓨터시스템 개요 1.1 컴퓨터의 기본 구조 1.2 정보의 표현과 저장 1.3 시스템의 구성 제1장 컴퓨터시스템 개요 1.1 컴퓨터의 기본 구조 1.2 정보의 표현과 저장 1.3 시스템의 구성 1.4 컴퓨터구조의 발전과정
컴퓨터시스템의 구성 응용 소프트웨어 (application software) 시스템 소프트웨어(system software) 하드웨어(hardware) 시스템 소프트웨어(system software) 응용 소프트웨어 (application software)
하드웨어와 소프트웨어 하드웨어(hardware) 소프트웨어(software) 컴퓨터 정보들의 전송 통로를 제공해 주고, 그 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체들 소프트웨어(software) 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 일어나는 시간을 지정해주는 명령(command)들의 집합 시스템 소프트웨어(system software) : OS(DOS, Win98, Unix 등) 응용 소프트웨어(application software) : 워드프로세서, 웹 브라우저 등
컴퓨터 하드웨어의 주요 요소들
컴퓨터의 기본 구조 컴퓨터는 프로그램 코드들을 정해진 순서대로 실행 필요한 데이터를 읽어서(read), 처리(processing)하고, 저장(store)
컴퓨터의 기본 구조 중앙처리장치(Central Processing Unit: CPU) 기억장치(Memory) 프로세서(processor) '프로그램 실행'과 '데이터 처리'라는 중추적인 기능의 수행을 담당하는 요소 기억장치(Memory) 저장장치(storage device) CPU가 실행할 프로그램과 데이터를 저장하는 장치 입출력장치(I/O device) 입력 장치(input device), 출력 장치(output device) 사용자와 컴퓨터간의 대화를 위한 도구
Structure - Top Level Computer Peripherals Communication lines Central Processing Unit Main Memory Computer Systems Interconnection Input Output Communication lines
Structure - The CPU CPU Arithmetic and Computer Registers Login Unit I/O System Bus CPU Internal CPU Interconnection Memory Control Unit
Structure - The Control Unit CPU Sequencing Login ALU Control Unit Registers and Decoders Control Unit Internal Bus Registers Control Memory
기억장치 주기억장치(main memory) 보조저장장치(auxiliary storage device) CPU 가까이 위치하며 반도체 기억장치 칩들로 구성 고속 액세스 가격이 높고 면적을 많이 차지 저장 용량의 한계 영구 저장 능력이 없기 때문에 프로그램 실행 중에 일시적으로만 사용 보조저장장치(auxiliary storage device) 2차 기억장치(secondary memory) 기계적인 장치가 포함되기 때문에 저속 액세스 저장 밀도가 높고, 비트 당 비용이 저가 영구 저장 능력을 가진 저장장치 : 디스크, 자기 테이프(magnetic tape) 등
정보의 표현과 저장 컴퓨터 정보 프로그램 코드 2진수 비트(1과 0)들로 표현된 프로그램 코드와 데이터 기계어(machine language) 기계 코드(machine code), 컴퓨터 하드웨어 부품들이 이해할 수 있는 언어 2진수 비트들로 구성 어셈블리 언어(assembly language) 어셈블리 코드(assembly code), 고급 언어와 기계어 사이의 중간 언어 저급 언어(low-level language), 기계어와 1:1 대응 고급 언어(high-level language) 영문자와 숫자로 구성되어 사람이 이해하기 쉬운 언어 C, PASCAL, FORTRAN, COBOL 등
고급 언어의 기계어로의 번역과정 예) Z = X + Y LOAD A,X : 기억장치 X번지의 내용을 읽어 레지스터 A에 적재(load) ADD A,Y : 기억장치 Y번지 내용을 읽어 레지스터 A에 적재된 값과 더하고 결과를 다시 A에 적재 STOR Z,A : 그 값을 기억장치 Z 번지에 저장(store)
번역 소프트웨어 컴파일러(compiler) 어셈블러(assembler) 고급언어 프로그램을 기계어 프로그램으로 번역하는 소프트웨어 어셈블러(assembler) 어셈블리 프로그램을 기계어 프로그램으로 번역하는 소프트웨어 니모닉스(mnemonics) 어셈블리 명령어가 지정하는 동작을 개략적으로 짐작할 수 있도록 하기 위하여 사용된 기호 ‘LOAD’, ‘ADD’, ‘STOR’ 등
기계 명령어 형식 연산 코드(op code) 오퍼랜드(operand) CPU가 수행할 연산을 지정해 주는 비트들 비트 수 = 3이면, 지정할 수 있는 연산의 최대 수는 23 = 8 오퍼랜드(operand) 적재될 데이터가 저장된 기억장치 주소 혹은 연산에 사용될 데이터 비트의 수 = 5이면, 주소 지정할 수 있는 기억장소의 최대 수는 25 = 32
프로그램과 데이터의 기억장치 저장 단어(word) : 각 기억장소에 저장되는 데이터 단위로서, CPU에 의해 한번에 처리될 수 있는 비트들의 그룹.
CPU와 각 장치의 접속 시스템 버스(system bus) CPU와 시스템 내의 다른 요소들 사이에 정보를 교환하는 통로 주소 버스(address bus) 데이터 버스(data bus) 제어 버스(control bus)
시스템 버스 주소 버스(address bus) CPU가 외부로 발생하는 주소 정보를 전송하는 선들의 집합 주소 버스의 비트 수 = 16 비트라면, 최대 216 = 64K 개의 기억 장소들의 주소를 지정 가능 단방향성(uni-directional bus) - 주소가 CPU로부터 기억장치 혹은 I/O 장치들로 전송되는 정보이기 때문
시스템 버스 데이터 버스(data bus) CPU가 기억장치 혹은 I/O 장치와의 사이에 데이터를 전송하기 위한 신호 선들의 집합 데이터 선들의 수는 CPU가 한 번에 전송할 수 있는 비트 수를 결정 데이터 버스 폭 = 32 비트라면, CPU와 기억장치 간 데이터 전송은 한 번에 32 비트씩 가능 양방향성(bi-directional) - 읽기와 쓰기를 모두 해야 하기 때문
시스템 버스 제어 버스(control bus) CPU가 시스템 내의 각종 요소들의 동작을 제어하기 위한 신호 선들의 집합 예) 기억장치 읽기/쓰기(Memory R/W) 신호 입출력장치 읽기/쓰기(I/O R/W) 신호
CPU와 기억장치 기억장치 write 동작 CPU가 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통하여 보내면서 동시에 쓰기 신호를 활성화 기억장치 쓰기 시간(memory write time) CPU가 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 시간
CPU와 기억장치 기억장치 read 동작 CPU가 기억장치 주소를 주소 버스를 통하여 보내면서 읽기 신호를 활성화 지연시간 = 주소를 해독(decode)하는 데 걸리는 시간과 선택된 기억 소자들로부터 데이터를 읽는 데 걸리는 시간을 합한 시간 기억장치 읽기 시간(memory read time) : CPU가 주소를 발생한 시간부터 읽기동작이 완료될 때까지의 시간
기억장치 액세스 동작의 시간 흐름도 읽기신호
CPU와 I/O 장치의 접속 CPU - 시스템 버스 – I/O 장치 제어기 – I/O 장치
I/O 장치 제어기 (I/O device controller) CPU로부터 I/O 명령을 받아서, 해당 I/O 장치를 제어하고 데이터를 이동함으로써 명령을 수행하는 전자회로 장치 (키보드 제어기, 프린터 제어기 등) 상태 레지스터 I/O 장치의 현재 상태를 나타내는 비트들을 저장한 레지스터 준비 상태(RDY) 비트, 데이터 전송확인(ACK) 비트 데이터 레지스터 CPU로부터 I/O 장치간에 이동되는 데이터를 일시적으로 저장하는 레지스터
키보드의 데이터 입력 과정 키보드 제어기 CPU 키보드의 어떤 한 key를 누르면, 그 key에 대응되는 ASCII 코드가 키보드 제어기의 data register에 저장되고, 동시에 status register의 In_RDY 비트 (ready bit)가 1로 set. CPU 키보드 제어기로부터 status register의 내용을 읽어서 In_RDY 비트가 set 되었는지 검사(In_RDY 비트는 data register에 외부로부터 데이터가 적재되었는지를 표시) 만약 set 되지 않았으면, 1번을 반복하며 대기. 만약 set 되었다면, data register의 내용을 읽음.
프린터의 데이터 출력 과정 CPU 프린터 제어기 프린터 제어기의 상태 레지스터의 내용을 읽어서 Out_RDY 비트 검사 (Out_RDY 비트는 프린터가 출력할 준비가 되었는지를 표시) 만약 세트 되지 않았으면, 1번을 반복하며 대기 만약 세트 되었다면, 프린트할 데이터를 프린터 제어기의 데이터 레지스터에 씀. 프린터 제어기 데이터 레지스터의 내용을 프린터로 보내고, 프린터의 하드웨어를 제어하여 인쇄.
CPU와 보조저장장치의 접속 보조저장장치들(디스크, 플로피 디스켓, CD-ROM 등)도 각 장치를 위한 제어기를 통하여 키보드나 프린터와 유사한 방법으로 접속. 차이점 : 데이터 전송 단위 키보드, 프린터 : 바이트(8 비트) 단위로 전송 보조저장장치 : 블록(512/1024/4096 바이트) 단위로 전송 제어기 내에 적어도 한 블록 이상을 임시 저장할 수 있는 데이터 버퍼 필요. 트랙 버퍼(track buffer) : 하드 디스크상의 한 트랙의 내용을 모두 저장할 수 있는 디스크 제어기의 데이터 버터
컴퓨터시스템의 전체 구성도
컴퓨터의 기본적인 기능들 프로그램 실행 데이터 저장 데이터 이동 데이터 입력/출력 제어 CPU가 주기억장치로부터 프로그램 코드를 읽어서 실행. 데이터 저장 프로그램 실행 결과로서 얻어진 데이터를 주기억장치에 저장. 데이터 이동 디스크 혹은 CD-ROM에 저장되어 있는 프로그램과 데이터 블록을 기억장치로 이동. 데이터 입력/출력 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어 들인다. 또한 CPU가 처리한 결과 값이나 기억장치의 내용을 프린터(혹은 모니터)로 출력. 제어 프로그램이 순서대로 실행되도록 또는 필요에 따라 실행 순서를 변경하도록 조정하며, 각종 제어 신호들을 발생.
컴퓨터 구조의 발전 과정 주요 부품들의 발전 과정 기계식(relay) → 전자식(진공관 → tr. → 반도체 IC) 처리속도 향상 저장용량 증가 크기 감소 가격 하락 신뢰도 향상 등의 발전 초기 컴퓨터들의 근본적인 설계 개념과 동작 원리가 현대의 컴퓨터들과 거의 같음
Electromechnical 초기 컴퓨터 Early Developments(the first calculators): 1623년 Tubingen 대학에서 Schickard가 만든 계산기 1642년 Pascal, 가산/감산을 수행하는 최초의 기계식 계산기 1671년 Leibnitz, 도르레와 chain을 이용하여 곱셈/나눗셈도 가능 Charles Babbage 1823년 The Difference Engine – 가산/감산 수행 1834년 The Analytical Engine: 처음으로 program 개념 도입, Unconditional, conditional branch 가능 – 기계식의 한계 Electromechanical computer 1941년 독일의 Zuse가 Z3를 제작하였으며, Program에 의해 control 되는 최초의 범용 컴퓨터 1944년 Havard 대학의 Aiken에 의해 Harvard Mark I 제작 Babbage의 Analytical engine을 전기식으로 제작.
1 세대 초기 기계식에서의 결점 Moving part 들의 관성으로 인한 계산 속도의 한계 기계부품들에 의한 부정확한 자료전송 ENIAC(Electronic Numerical Integrator and Calculator) 펜실베니아대학에서 개발한 진공관을 사용한 최초의 전자식 컴퓨터 18,000개의 진공관, 140KW, 무게 30톤, 설치면적 450평 등 program은 switch 조작으로 이루어짐 문제점 : 프로그램의 저장과 변경 불가능 The von Neumann Machine Stored-program concept : program이 main memory 내에 존재하여 실행되는 방식 1946년 Von Neumann에 의해 창안되었으며 1951년에 실제로 가동됨 특징으로서는, 대용량의 memory(1024 Words), 보조 기억장치, 이진수 계산 원리의 적용 1946년 von Neumann이 IAS(Princeton Institute for Advanced Studies) computer 설계 - 1세대 전형적인 컴퓨터구조
Structure of von Neumann machine
1세대의 상용 컴퓨터들 1947년, UNIVAC I 1950년대 후반, UNIVAC II Universal Automatic Computer Eckert-Mauchly회사 설립, 후에 Sperry-Rand Corp. 최초의 성공적인 상용컴퓨터 1950년대 후반, UNIVAC II 더 많은 기억용량과 고속처리 능력 특징 기술 발전에 따라 대용량, 고속, 고성능의 컴퓨터 개발 호환성(backward compatible) - 고객 유지, S/W 이용.
ISA 컴퓨터의 구조 von Neumann 구조: 프로그램 코드들을 기억장치에 저장된 순서대로 실행하며, 그 주소는 CPU의 내부 레지스터인 프로그램 카운터(PC)에 의하여 지정된다.
ISA 컴퓨터의 특성(단점) 반복되는 계산과정 실행에서 operand의 address 수정방식 (Index 방법)이 효율적이지 못하다. 즉, program 실행 후 program 자체가 변화됨으로써 program 시작 때마다 load해야 하는 단점이 있다. Subroutine call과 같은 program link 기능이 없음. Floating-point 연산이 H/W 적으로 이루어지지 않아 speed가 느리다. 1 word에 두 개의 instruction이 존재하므로 program이 복잡 (instruction fetch 에 걸리는 시간은 1/2로 줄어든다.) Instruction이 주로 numerical 용이기 때문에 computation logical, non-numerical 문제 해결에 부적당하다. I/O instruction 이 미약하다.
2 세대 2 세대 특징 진공관 → Transistor (Switching) : greater speed 주기억장치: 진공관식 → Core M. : larger memory capacity Smaller, Cheaper, Less heat dissipation Floating-point 연산이 hardware 화 : more complex ALU High-level language 사용 1957년 IBM의 John Bacus가 Fortran 개발 1957년 CODASYL에서 COBOL 발표 I/O processor 사용 → CPU 효율의 증대 컴퓨터 생산업체에서 System software 제공 IBM 1953 - the 701(IBM’s first stored program computer - Scientific calculations) 1955 - the 702(Business applications) Lead to 700/7000 series The IBM 7094 (A Second Generation Computer) : 2세대의 대표적인 과학계산용 컴퓨터 DEC – 1957(Produced PDP-1)
2 세대 Large systems Supercomputers (1950년대 중반) LARC by UNIVAC Stretch by IBM (IBM 7030) 이들은 계산 속도를 증가시키기 위하여 아래의 몇 가지 기법을 포함시키고 있다. Pipelining : 한 명령어의 execution cycle 동안 다음 명령어를 fetch 하는 것이며 이 기능은 대체로 multiple ALU, instruction buffers, interleaved memory를 필요로 한다. Multiprogramming : 한 개의 CPU가 여러 개의 program을 execution 함. Time-sharing system : Realtime 방식으로 여러 user program을 수행할 수 있는 Multiprogramming system. Multiprocessor system : Multiprogramming을 여러 개의 CPU로 구성된 system으로 수행.
3 세대 3세대 Computer의 특징 Transistor → IC Core memory → IC memory Microprogramming 기법 사용 Concurrent/parallel processing기법 사용 Computer의 resource sharing 방법 개발 LARC, Stretch 이후 1964년 CDC 6600 1969년 CDC 7600 → Cyber Vector/Array Computer - 계산속도를 높이기 위해 여러 개의 ALU를 갖고 있음. 1960년대 중반 low-cost의 minicomputer 등장 1963년 MIT의 LINC가 시초 → DEC의 PDP 개발에 영향 (PDP-8 → PDP-11 → VAX-11)
3 세대 Microelectronics Moore’s Law Moore’s law에 근거한 결과 Literally - “small electronics” A computer is made up of gates, memory cells and interconnections These can be manufactured on a semiconductor Moore’s Law Gordon Moore - cofounder of Intel Increased density of components on chip; number of transistors on a chip will double every year Since 1970’s development has slowed a little Number of transistors doubles every 18 months Moore’s law에 근거한 결과 Cost of a chip has remained almost unchanged Higher packing density means shorter electrical paths, giving higher performance Smaller size gives increased flexibility Reduced power and cooling requirements Fewer interconnections increases reliability
IBM 360 series 1964년, Replaced (& not compatible with) 7000 series First planned “family” of computers Similar or identical instruction sets Similar or identical O/S Increasing speed Increasing number of I/O ports (i.e. more terminals) Increased memory size Increased cost 전체 컴퓨터 산업에 큰 영향을 주었으며, 대형 컴퓨터들의 표준이 됨.
DEC PDP-8 1964년, first minicomputer (after miniskirt!) Did not need air conditioned room Small enough to sit on a lab bench $16,000 ($100k+ for IBM 360) Embedded applications & OEM BUS STRUCTURE – IBM 700/7000 에서는 central switch를 사용하였으나, PDP-8 에서는 버스구조를 사용.
주요 컴퓨터 부품들의 발전 경위 트랜지스터(Transistor) 집적 회로(Integrated Circuit: IC) 초기(제1세대) 전자식 컴퓨터의 핵심 부품인 진공관을 대체한 전자 부품 진공관보다 작고 싸며 더 적은 열을 발산 반도체 재료인 실리콘으로 만들어진 고체(solid-state) 장치 제2세대로 분류 초기 컴퓨터들은 약 1000 개의 트랜지스터들로 구성 집적 회로(Integrated Circuit: IC) 수 만개 이상의 트랜지스터들을 하나의 반도체 칩에 집적시킨 전자 부품 제3세대 컴퓨터로 분류
IC의 제조 과정
세대구분 및 집적도 Vacuum tube(1946-1957) Transistor(1958-1964) SSI(1965 - ) 수십 개의 트랜지스터들이 집적되는 소규모 IC 최근에는 주로 기본적인 디지털 gate들을 포함하는 칩 MSI 수백 트랜지스터들이 집적되는 IC counter, decoder 또는 shift register와 같은 조합 회로나 순차 회로를 포함하는 칩 LSI 수천 개의 트랜지스터들이 집적되는 대규모 IC 8-비트 마이크로프로세서 칩이나 소규모 반도체 기억장치 칩 VLSI(1970년대 후반 to date) 수만 개 이상의 트랜지스터들이 집적되는 대규모 IC 마이크로프로세서 칩이나 대규모 반도체 기억장치 칩 ULSI
IC 사용에 따른 이점 전기적 통로가 짧아짐 동작 속도가 크게 상승 컴퓨터 크기의 감소 칩 내부의 회로들간의 상호연결 부품들의 신뢰성 향상 전력 소모 감소 및 냉각 장치의 소형화 컴퓨터 가격 하락 제4세대 컴퓨터 시대의 시작 개인용 컴퓨터 출현 초고속 슈퍼컴퓨터 개발
개인용 컴퓨터 (PC) 특징 주요 발전 동향 소형, 저가, 성능향상 - 과거 대형 컴퓨터의 성능을 능가함 소형, 저가, 성능향상 - 과거 대형 컴퓨터의 성능을 능가함 주요 발전 동향 매 2 ~ 3 년마다 성능이 개선된 새로운 마이크로프로세서 등장 주변요소들(캐쉬, MMU, 산술보조프로세서 등)이 CPU 칩에 내장됨에 따라 속도 및 신뢰도가 향상 CPU 구조가 다수의 ALU들 혹은 명령어 EU들을 포함하는 슈퍼스칼라 구조로 발전함에 따라, 여러 명령어들의 동시 실행 가능 분기 예측, 동적 실행 기법 등의 사용으로 처리속도 향상. 다양한 정보들에 대한 입출력, 저장 및 처리 능력을 보유하게 됨에 따라 멀티미디어 PC로 발전. 편리한 사용자 인터페이스를 위한 시스템소프트웨어 출현 (Windows 95/98/2000/XP). 고속 입출력장치들의 인터페이스를 위한 새로운 버스 규격 제안. 주기억장치와 보조저장장치의 용량이 크게 증가
중형급 컴퓨터시스템 워크스테이션(workstation) 슈퍼미니컴퓨터(Super-minicomputer) CPU : 32-비트 혹은 64-비트 마이크로프로세서 사용 고속 그래픽 처리 하드웨어 포함 주요 응용 : 컴퓨터를 이용한 설계(CAD), 시뮬레이션 등 OS : UNIX 슈퍼미니컴퓨터(Super-minicomputer) 시스템 구조 : 다중프로세서(multiprocessor) 구조 CPU의 수 : 20 ~ 30 개 성능 : VAX-11 미니컴퓨터 성능의 수십 배 이상 다운사이징(downsizing) 주도 하나의 대형컴퓨터를 사용하기보다는 네트워크에 접속된 다수의 중형급 컴퓨터 시스템들을 응용(혹은 용도)별로 구분하여 컴퓨팅환경을 구축하여 사용하는 경향
다중프로세서시스템의 구조
메인프레임(Mainframe) IBM 360 및 370 계열, 3081, 3090 등으로 계속 발전 대용량 저장장치 보유 다중 I/O 채널을 이용한 고속 I/O 처리 능력 보유 대규모 데이터베이스 저장 및 관리용으로 사용 최근 성능과 가격면에서 슈퍼미니급 컴퓨터들과 경쟁하고 있으며, 점차적으로 시장 점유율 하락 중
슈퍼컴퓨터(Supercomputer) 정의 현존하는 컴퓨터들 중에서 처리 속도와 기억장치 용량이 다른 컴퓨터들에 비하여 상대적으로 월등한 컴퓨터 시스템들 분류 기준 최초의 슈퍼컴퓨터인 CRAY-1의 속도는 100 MFLOPS 최근의 슈퍼컴퓨터들의 속도는 수백 GFLOPS 이상 그러나 이러한 기준은 계속 상승되고 있음. 주요 응용 분야 VLSI 회로 설계, 항공우주공학, 천문학(일기 예보), 구조 공학, 유전 탐사, 핵공학, 인공지능, 입체 영상처리 등과 같은 대규모 과학 계산 및 시뮬레이션
슈퍼컴퓨터 분류 파이프라인 슈퍼컴퓨터(pipeline supercomputer) 한 CPU 내에 다수의 연산 장치들이 포함 각 연산 장치는 고도의 파이프라이닝 구조를 이용하여 고속 벡터 계산 가능 대표적인 시스템들 : CRAY Y-MP, CRAY-2, Fujitsu VP2000, VPP500 등 대규모 병렬컴퓨터(massively parallel computer) 한 시스템 내에 상호 연결된 수백 혹은 수천 개 이상의 프로세서들 포함 프로세서들이 하나의 큰 작업을 나누어서 병렬로 처리됨. 시스템 구조의 예) Thinking Machine사의 CM-1 시스템 특징 : 프로세서 수는 최대 65,536(216)개 프로세서 내부 구조 : 매우 간단한 구조의 프로세서 16개가 상호 연결되어 하나의 칩에 집적되어 있으며, 그러한 칩들이 수백개가 모여 한 프로세서 모듈을 구성
CM-1 병렬컴퓨터의 프로세서 모듈
Growth in CPU Transistor Count
Performance Mismatch Processor speed increased 매 3년마다 성능이 4-5배씩 개선되어왔다. Memory capacity increased DRAM의 용량이 매 3년마다 4배씩 증가 → 필요한 DRAM의 수가 감소 → DRAM의 수가 적으면 전송율에 영향을 미침. (데이터를 병렬로 전송할 수 있는 기회가 줄어듬.) Memory speed lags behind processor speed
DRAM 및 Processor 특성
Solutions Increase number of bits retrieved at one time Make DRAM “wider” rather than “deeper” Change DRAM interface 칩상에 Cache나 다른 buffering 방식을 포함. Reduce frequency of memory access More complex cache and cache on chip Increase interconnection bandwidth High speed bus 사용 Hierarchy of bus 사용
프로세서 속도를 높이기 위한 3가지 방법 1. 하드웨어 기술 개발 2. Cache memory 3. 프로세서내 병렬성 추가 - 프로세서 하드웨어 기술 개발로 인한 집적도 증가를 통하여 속도를 증가시킬 수 있다. 2. Cache memory - 프로세서와 주기억장치 사이에 위치하는 cache memory의 용량과 속도를 증가시킨다. - Cache로 인한 access time 감소 - Cache 용량이 증가되어 왔다. 3. 프로세서내 병렬성 추가 - 명령어 실행 속도를 높일 수 있도록 프로세서 조직과 구조를 바꾸어 병렬처리 기능을 포함 시킨다. 예) pipelining, superscalar