목차 2.1 CPU의 기본 구조 2.2 커맨드 실행.3 커맨드 파이닝 2.4 커맨드 세트
CPU의 기능-명령 실행 과정 1. 명령 인출(Instruction Fetch):메모리 장치로부터 명령을 읽기 2. 명령 해독(Instruction Decode):실행해야 할 동작을 결정하기 때문에 명령어 해독 3. 데이터 인출(Data Fetch):명령 실행을 위해서 데이터가 필요한 경우에는 메모리 장치 또는 I/O장치에서 그 데이터를 읽는 4. 데이터 처리(Data Process):데이터에 대한 산술적 또는 논리적 연산 수행 5. 데이터 저장(Data Store):수행한 결과를 모든 3단계에서 명령->1CPU의 기본 구조 CPU내부 구성 요소 3개.산술 논리 연산 장치(ALU;Arithmetic and Logic Unit)2. 레지스터 세트(Register Set)3. 제어 유닛(Control Unit)
CPU의 기능 – 명령 실행 과정 1. 명령어 인출(Instruction Fetch) : 메모리 장치에서 명령어 읽기 2. 명령어 해독(Instruction Decode) : 수행해야 할 동작을 결정하기 위해 명령어 해독 3. 데이터 인출(Data Fetch) : 명령어 실행을 위해 데이터가 필요한 경우에는 메모리 장치 또는 I/O 장치에서 그 데이터를 가져오는 4. 데이터 처리(Data Process) : 데이터에 대한 산술적 또는 논리적 연산 수행 5. 데이터 저장(Data Store) : 수행한 결과를 모든 3단계에서 명령어-CPU>산술논리연산장치(ALU; Arithmetic and Logic Unit) 2. 레지스터 세트(Register Set) 3. 제어유닛(Control Unit)
2.2명령 실행 명령 사이클(instruction cycle)-CPU가 하나의 명령을 실행하는데 필요한 전체 처리 과정.-명령 인출 단계로 명령 실행 단계로 나누어진다.-CPU가 프로그램 실행을 시작한 순간부터 전원을 끄거나 회복 불가능한 에러가 발생하고 중단될 때까지 반복 서브 사이클(fetch cycle)인출 사이클(fetch cycle):CPU가 기억 장치로부터 명령어 읽기 단계 실행 사이클(execution cycle):명령 실행 단계
기본 명령 주기
명령 실행에 필요한 CPU 내부 특수목적용 레지스터 5개
명령 실행에 필요한 CPU 내부 특수목적용 레지스터 5개
인출 주기의 주소 및 명령 흐름 다이어그램
인출 사이클의 마이크로 연산(micro-operation)t0:MAR<-PCt1:MBR<-M[MAR], PC<-PC+1t2:IR<-MBR사이클 해석 t0:현재 PC내용을 CPU내부 버스를 통해서 MAR에 전송 t1:그 주소가 지정하고 기억 장치 위치에서 읽힌 명령이 데이터 버스를 통해서 MBR에 적재. PC+1t2:MBR에 있는 명령어 코드가 명령 레지스터 IR에 이동 사례 CPU클록=1GHz의 경우 인출 사이클이 소요되는 시간은?수영장 t0, t1, t2는 CPU클록의 각 주기를 가리킨다.클록=1GHz로 있으면 주기=1ns한 주기당 1ns이기 때문에, 인출 사이클은 합계 1ns*3=3ns 든다.
2.2.2실행 사이클 CPU가 인출된 명령어 코드를 해독(decode) 하고 그 결과에 따라서 필요한 연산을 수행 CPU가 행하는 연산 종류 1. 데이터 이동:CPU와 기억 장치 간 혹은 I/O장치 간에 데이터 이동 ex.LOAD2. 데이터 처리:산술 논리 연산 수행 ex. ADD3. 데이터 보존:데이터를 기억 장치에 저장 ex. STOR4. 프로그램 제어:프로그램의 실행 순서 결정 ex. JUMP실행 사이클에서 열리는 마이크로 연산은, 명령어 연산 코드에 의해서 결정된다. 기본적인 명령 형식 구성 연산 코드(operation code):CPU가 행하는 연산 지정 오퍼랜드(operand):명령 실행에 필요한 데이터가 저장된 주소(addr)
1. LOAD addr명령 데이터 이동 명령 기억 장치에 저장된 데이터를 CPU내부 레지스터인 AC로 이동하는 명령 t0:MAR<-IR(addr)t1:MBR<-M[MAR]t2:AC<-MBRt0:명령 레지스터 IR에 있는 명령의 주소 부분을 MAR에 전송 t1:그 주소가 지정한 기억 장소에서 데이터를 인출, MBR에 전송 t2:그 데이터를 AC에 적재 2. STA addr명령어 저장 명령 AC레지스터의 내용을 기억 장치에 저장하는 명령 t0:MAR<-IR(addr)t1:MBR<-ACt2:M[MAR]<-MBRt0:데이터 보존하고 기억 장치 주소 IR(addr)을 MAR에 전송 t1:보존하는 데이터 AR를 버퍼 레지스터인 MBR에 이동 t2:MBR의 내용을 MAR이 보존하고 기억 장소에 보존 3.ADDr명령 데이터 처리 명령 기억 장치에 저장된 데이터를 AC의 내용과 함께 그 결과는다시 AC에 보존 t0:MAR<-IR(addr)t1:MBR<-M[MAR]t2:AC<-AC+MBRt0:데이터 보존하고 기억 장치 주소 IR(addr)을 MAR에 전송 t1:보존하는 데이터 M[MAR]를 버퍼 레지스터인 MBR에 이동 t2:그 데이터와 AC내용을 추가하고 결과 값을 다시 AC에 보존하는
ADD 명령 실행 주기
4. JUMP addr 명령 프로그램 제어 명령어 오펠랜드가 숨기는 위치의 명령어로 실행 순서를 변경하는 분기 명령어 t0:PC<-IR(addr) 어셈블리 프로그램 예시 연산 코드에 할당된 임의의 정수: L1, S2, A5, J8 어셈블리 프로그램의 예
어셈블리 프로그램 실행 프로세스의 예
어셈블리 프로그램 실행 프로세스의 예
어셈블리 프로그램 실행 프로세스의 예어셈블리 프로그램 실행 프로세스의 예끼어들기에 의한 제어 이동 인터럽트 처리 과정-CPU인터럽트 처리의 상세 동작 1. 현재 명령 실행이 끝나면 바로 다음 실행 명령 주소(PC내용, 복귀하는 주소)를 스택(stack)에 저장 2. ISR을 불러내기 때문에 그 루틴의 시작 주소를 PC에 적재. 시작 주소는 인터럽트를 요구한 장치로부터 송신 or미리 결정된 값으로 결정 인터럽트 사이클의 마이크로 연산 t0:MBR<-PCt1:MAR<-SP, PC<-ISR의 시작 주소 t2:M[MAR]<Portin*Stack>, PC의 내용은 인터럽트 서비스 루틴의 시작 주소로 변경 t2:MBR에 저장된 원래의 PC내용을 스택에 저장 인터럽트 사이클의 마이크로 연산 제1명령 LOAD250실행 중에 끼어들다. SP=999, ISR(인터럽트 서비스 루틴 개시 주소)=650때 기억 장치와 CPU레지스터 상태 변화는?100 LOAD 250101 ADD 251102 STA 251103 JUMP 170다중 인터럽트(multiple interrupt)-인터럽트 서비스 루틴 수행 중에 다른 인터럽트 발생-다중 인터럽트 처리 방법. CPU가 인터럽트 서비스 루틴 처리 중에 새로운 요구가 들어와도 실행하지 않는 인터럽트 플래그(interrupt flag)<-0: 무너져불가능(interrupt disabled)상태. 끼어들기 우선 순위를 정해서 그 순서대로 실행. 우선 순위가 높은 새치기가 들어오면 현재 새치기를 중단하고 새로운 인터럽트 처리다중 인터럽트(multiple interrupt)- 인터럽트 서비스 루틴 수행 중 다른 인터럽트 발생-다중 인터럽트 처리 방법. CPU가 인터럽트 서비스 루틴 처리 중 새로운 요청이 들어와도 실행하지 않는 인터럽트 플래그(interrupt flag) <-0: 인터럽트 불가능(interrupt disabled) 상태. 인터럽트 우선순위를 정하고 그 순서대로 실행. 우선순위가 높은 인터럽트가 들어오면 현재 인터럽트를 중단하고 새로운 인터럽트 처리2.3 커맨드 파이닝 instruction pipelining CPU의 프로그램 처리 속도를 높이기 위해 CPU 내부 하드웨어를 여러 단계로 나누어 동시 처리하는 기술 – 2단계 커맨드 파이프라인(two-stage instruction pipeline)2.3 커맨드 파이닝 instruction pipelining CPU의 프로그램 처리 속도를 높이기 위해 CPU 내부 하드웨어를 여러 단계로 나누어 동시 처리하는 기술 – 2단계 커맨드 파이프라인(two-stage instruction pipeline)IF)단계: 다음 명령어를 기억장치에서 인출하는 ID)단계: 해독기(decoder)를 이용하여 명령어 해석 OF)단계: 기억장치에서 오퍼랜드 인출 EX)단계: 지정된 연산수행 파이프라인에 의한 전체 명령어 실행시간 k=k+(N-1)개의 명령어 실행시간 T1=k*N 파이프라인을 통한 속도 향상 speed up Sp=T1/Tk=(k*N)/(k+(N-1))IF)단계: 다음 명령어를 기억장치에서 인출하는 ID)단계: 해독기(decoder)를 이용하여 명령어 해석 OF)단계: 기억장치에서 오퍼랜드 인출 EX)단계: 지정된 연산수행 파이프라인에 의한 전체 명령어 실행시간 k=k+(N-1)개의 명령어 실행시간 T1=k*N 파이프라인을 통한 속도 향상 speed up Sp=T1/Tk=(k*N)/(k+(N-1))분기 발생에 의한 성능 저하의 최소화 방법-분기 예측-분기 목적 지선 사람 개의 명령을 차례로 보존하는 방법-지연 분기:분기 명령어 위치 재배치, 파이프 라인의 성능 개선 상태 레지스터 status registerondition flag들 보존 S)플래그, 영(Z)플래그, 업 수(C)플래그, 동등(E)플래그, 오버 플로(V)플래그, 앙타라프토(I)플래그, 슈퍼바이저(P)플래그2.3.3슈퍼 스칼라 Superscalar-CPU처리 속도를 올리기 위해서 내부에 두개 또는 그 이상의 명령어 파이프 라인을 포함한 구조-클락 주기마다 각 명령어 파이프 라인이 별도의 명령 인출 동시 실행할 수 있어 이론적으로는 프로그램 처리 속도가 파이프 라인 수만 향상 가능-m-way슈퍼 스칼라:파이프 라인 수=m2-way슈퍼 스칼라 명령 실행 순서도2.3.3 슈퍼 스칼라 Superscalar-CPU 처리 속도를 높이기 위해 내부에 두 개 또는 그 이상의 커맨드 파이프라인을 포함한 구조 – 클럭 주기마다 각 커맨드 파이프라인이 별도의 커맨드 인출 동시 실행할 수 있으므로 이론적으로는 프로그램 처리 속도가 파이프라인 수만 향상 가능 -m-way 슈퍼 스칼라 : 파이프라인 수 = m2-way 슈퍼 스칼라의 커맨드 실행 흐름도2.3.4 듀얼코어 및 멀티코어-CPU코어-멀티코어 프로세서: 복수의 CPU코어를 하나의 칩에 포함하는 프로세서-칩-레벨 다중프로세서 or 단일-칩 다중프로세서-듀얼코어 프로세서: 단일코어 슈퍼스칼라 프로세서 대비 2배 속도 향상 기대-멀티스레드): 독립적으로 실행할 수 있는 최소 크기의 프로그램 단위 S를 포함한다. 스레드를 2개씩 처리2.3.4 듀얼코어 및 멀티코어-CPU코어-멀티코어 프로세서: 복수의 CPU코어를 하나의 칩에 포함하는 프로세서-칩-레벨 다중프로세서 or 단일-칩 다중프로세서-듀얼코어 프로세서: 단일코어 슈퍼스칼라 프로세서 대비 2배 속도 향상 기대-멀티스레드): 독립적으로 실행할 수 있는 최소 크기의 프로그램 단위 S를 포함한다. 스레드를 2개씩 처리CALL X 명령어에 대한 마이크로-연산 0 : MBR <-PC1 : MAR <-SP,PC <-X2 : M[MAR] ← MBR, SP <-SP – 1RET 명령어의 마이크로-연산 0 : SP <-SP + 11 : MAR <-SP2 : PC <-M[MAR]2.4.2명령 형식 명령어의 컴포넌트. 연산 코드 Operation Code:실행되는 연산 지정(ex.LOAD, ADD). 오퍼랜드 Operand:연산 수행에 필요한 데이터/데이터 주소. 다음 명령 주소 Next Instruction Address:현재 명령 실행 완료 후 다음 명령을 인출 위치 지정 커맨드 형식 명령 내의 필드 수와 배치 방법, 및 각 필드의 비트 수-필드 Field:명령 내의 각 컴포넌트에 필요한 비트 그룹-명령장=단어(word)오래 ex. 3개의 필드로 구성된 16비트 명령어2.4.2 명령어 형식 명령어의 컴포넌트. 연산코드 Operation Code: 실행되는 연산 지정(ex.LOAD, ADD). 오퍼랜드 Operand: 연산 수행 시 필요한 데이터/데이터 주소. 다음 명령어 주소 Next Instruction Address: 현재 명령어 실행 완료 후 다음 명령어를 끌어내는 위치 지정 명령어 형식 명령어 내 필드 수 및 배치 방법 및 각 필드의 비트 수-필드 Field: 명령어 내 각 컴포넌트에 필요한 비트 그룹-명령어 길이 = 단어(word) 길이 ex. 3개의 필드로 구성된 16비트 명령어2.4.2 명령어 형식 명령어의 컴포넌트. 연산코드 Operation Code: 실행되는 연산 지정(ex.LOAD, ADD). 오퍼랜드 Operand: 연산 수행 시 필요한 데이터/데이터 주소. 다음 명령어 주소 Next Instruction Address: 현재 명령어 실행 완료 후 다음 명령어를 끌어내는 위치 지정 명령어 형식 명령어 내 필드 수 및 배치 방법 및 각 필드의 비트 수-필드 Field: 명령어 내 각 컴포넌트에 필요한 비트 그룹-명령어 길이 = 단어(word) 길이 ex. 3개의 필드로 구성된 16비트 명령어2.4.3주소 지정 방식 addressing mode-명령어 실행에 필요한 오퍼랜드 주소 결정 방식-명령 내 오퍼랜드 필드의 내용:기억 장치 주소 레지스터 번호, 데이터-기호 EA:유효 주소(Effective Adress), 데이터 저장된 기억 장치의 실제 주소:명령 내 주소 필드 내용(오퍼랜드 필드->기억 장치 주소의 경우):명령 내 레지스터 번호(오퍼랜드 필드->레지스터 번호의 경우)A):기억 장치 A번지의 내용 R):레지스터 R의 내용 1)직접 주소 지정 방식 EA=A오퍼랜드 필드의 내용이 유효 어드레스(EA)가 되는 방식 2. 간접 어드레스 지정방식 EA=(A)오퍼랜드 필드에 기억장치 주소를 저장하고 있는데, 그 주소가 가리키는 기억장소에 데이터의 유효주소를 저장해 두는 방식 3. 묵시적 주소지정방식 HL’ 명령어: AC의 내용을 좌우로 shift 하는 산술 명령어 4. 즉시주소지정방식 5. 레지스터 주소지정방식 EA=R주소지정에 사용할 수 있는 레지스터수=2k개(k=R필드비트수)6. 레지스터 간접 주소 지정 방식 EA = (R)7. 변위 주소 지정 방식 EA = A + (R) 8. 상대 주소 지정 방식 EA = A + (PC) + 1 (단, A는 2의 보수)프로그램 카운터(PC)를 레지스터로 사용하여 EA계산9. 인덱스 어드레스 지정방식 EA=(IX)+A10.베이스-레지스터 어드레스 지정방식 EA=(BR)+A