클럭 - 시스템 구성요소롤 cpu의 내부와 동기시킨다
제어장치 (CU) - 기계 명령어를 실행하는 데 수반되는 단계들의 순서를 조정한다
논리연산장치 - AND OR NOT 연산 수행
bus(버스)는 데이터를 컴퓨터의 한 부분에서 다른 부분으로 전송하는 병렬 와이어 이다
데이터 버스 입출력 버스 제어 버스 주소 버스
클럭: CPU와 system bus를 포함하는 각 동작은 일정한 속도로 진동하는 내부 클럭에 동기가 되는데 이 시간의 기본 단위는 기계사이클 이다. 클럭사이클 이라고도 함
기계어 명령어 수행에 적어도 1클럭 이상 필요
복잡한 명령어는 많은 클럭 사이클이 필요
메모리 접근 시 느린 메모리 속도 때문에 대기상태 사이클 존재
메모리 접근 속도 높이기 위해 고속 캐시 메모리 사용 ( 한번읽은것을 복사하고사용)
-----------------
x86구조 세부사항
x86 프로세서는 보호모드 실제주소모드 시스템관리모드 이 세가지 주요 동작가짐.
보호모드 - protected 모드는 모든 명령어와 특징을 사용할 수 있는 프로세서의 고유한 상태이다. 세그먼트라고 하는 분리된 메모리 영역이 주어지며 프로세서는 지정된 세그먼트 바깥의 메모리를 참조하는 것을 방지한다
실제 주소모드 - real address mode 는 다른 모드로 전환하는 능력과 같은 몇 개의 추가적인 특징을 가진 인텔 프로그래밍 환경을 구현한다. 시스템 메모리와 하드웨어 장치에 직접 접근할 필요가 있는 프로그램을 실행하는 데에 사용될 수 있다.
시스템 관리모드 - 운영체제에 전원 관리와 시스템 보안과 같은 기능을 구현하는 방법을 제공한다.
virtual 8086 mode-
protected mode에서 real address mode용 프로그램을 그대로 수행할 수 있도록 주소변환을 하는 동작 모드
여러 개의 MS DOS 프로그램을 실행시킬 수 있음.
x86 processor는 CISC 계열이다
-----
주소공간
real address mode, virtual 8086 mode -> 주소비트수가 20이라 크기가 2^20=1MB
protected mode 0> 주소크리가 32biㅅ 2^32 = 4GB이다
레지스터는 cpu바로 안에 있는 고속 저장장소이며 일반 메모리보다 훨씬 빠른 속도로 접근되도록 설계
8개의 범용레지스터와 6개의 세그먼트 레지스터 플래그 레지스터 명령어 포인터로 구성
범용 레지스터는 계산과 데이터 전송에 주로 사용된다. 하위 16비트로도 참조 될수 있다
어떤 레지스터들은 8비트 값으로 다룰 수 있다.
세그먼트 레지스터
segment의 시작주소 지정에 사용된다
실제 주소모드에서 16비트.
code segment data segment stack segment
메모리 주소는
segment 시작주소 + offset 주소
명령어 포인터 EIP 는 실행할 다음명령어의 주소를 포함한다.
플래그 레지스터
제어 플래그 :
cpu 동작을 제어한다 모든 명령어가 실행된 후에 cpu를 멈추게 하고 산술 오버플로우가 감지됐을 때 인터럽트 발생
상태플래그:
산술 논리 연산의 결과를 반여한다 .
오버플로우 부호 제로 보조캐리 패리티 캐리
OF SF ZF AC PF CF
---------------
메모리 관리
메모리 상의 데이터 주소 지정
2BYTE 이상의 데이터는 2개 이상의 연속적인 주소의 메모리에 저장됨
리틀 엔디안 방식 사용 - 하위 바이트가 낮은 주소
Register 052B ---> 주소 a = 2B 주소 a+1= 05
real address mode 16진수 주소 00000 -FFFFF 까지 1MB 메모리 주소 지정
프로세서는 한번에 하나 의 프로그램 실행
protected mode 동시에 여러개 프로그램 실행가능
각 프로세스에 총 4GB 메모리 할당
가상 8086
세그먼트와 주소지정
선형주소 = 주소 ( segment + offset) 으로 된 2차원 주소를 단일 주소로 바꾼것
paging 을 사용하지 않으면 => 선형주소 = 메모리주소
paging 을 사용하면 : 선형주소와 메모리주소는 다르다
address=(segment<<4)+offset
균일 세그먼트 모델
모든 세그먼트가 32bit 전체 메모리 공간에 맵핑
전체 메모리를 단일 세그먼트로 사용
offset주소 = 선형주소
메모리 주소 = 세그먼트 주소 (0) + offset
다중 세그먼트 모델
각 프로그램은 자신의 세그먼트 테이블은 가짐
자신의 LDT에 세그먼트 들의 segment 를 정의함
페이징
페이징을 지원한다 페이징은 동시에 실행 중인 모든 프로그램이 사용하는 전체 메모리가 컴퓨터의 물리적 메모리보다 훨씬 더 커도 되게한다
---------------
CISC - 많은 수의 명령어들로 구성됨
RISC - 적은 수의 짧고 간단한 명령어들로 구성됨
PCI 병렬 PCI express 버스 = 직렬
ROM = 비휘발성 MEMORY
------------
댓글 없음:
댓글 쓰기