반응형

책/컴퓨터 구조 10

컴퓨터 구조 Ch02_"Language of the Computer-4"

2.11 병렬성과 명령어 : 동기화 Task들이 종속 관계 및 협력 관계에 있을때 데이터 경쟁관계(Race Condition)의 위험이 있다. 즉, 이벤트의 일어나는 순서에 따라 프로그램의 결과가 달라질 수 있는 상황이다. 동기화 메커니즘은 일반적으로 사용자 수준 소프트웨어 루틴에서 제공되는데 이 소프트웨어 루틴들은 하드웨어가 제공하는 동기화 명령을 사용한다. 여기서는 간단하게 lock, unlock 동기화를 사용한다. lock, unlock은 critical section이라 칭하는 하나의 공간을 생성하며 이 공간은 오직 하나의 프로세서만이 실행 가능하다.즉, Mutual Exclusion하게 실행된다는 의미이다. 이런 방법을 제공하기위해 원자적 교환(Atomic swap)을 사용하게된다. 이는 레지스..

컴퓨터 구조 Ch02_"Language of the Computer-3"

2.9 문자와 문자열 오늘날 대부분의 컴퓨터는 8bit 로 문자를 표현하며, 거의 모든 컴퓨터가 ASCII를 사용한다. 문자 데이터는 보통 여러 개가 모여 문자열(String)을 이루는데, 문자열의 길이는 가변적이다. 가변길이 문자열을 표현하는 방법은 아래 세가지가 존재한다. 1) 문자열 맨 앞에 길이를 표시하는 방법 2) 같이 사용되는 변수에 그 길이를 표시하는 방법(구조체 처럼) 3) 마지막에 문자열의 끝을 표시하는 특수 문자를 두는 방법 C언어는 문자열 끝에 0값(Null)을 두는 세번째 방법을 사용한다. 따라서 "Cal"은 67,97,108,0 의 4바이트로 표현한다. 2.10 긴 수치와 주소를 위한 LEGv8의 주소지정 방식 LEGv8의 명령어 길이를 32비트로 고정한 덕택에 하드웨어가 간단하지..

컴퓨터 구조 Ch04_"The Processor-4"

4.6 파이프라인 데이터 패스 및 제어 1. IF(Instruction Fetch) : 명령어 인출 2. ID(Instruction Decode) : 명령어 해독 및 레지스터 파일 읽기 3. EX(Execute) : 실행 또는 주소 계산 4. MEM(Memory Access) : 데이터 메모리 접근 5. WB(Write Back) : 쓰기 명령어와 데이터는 실행되면서 5단계를 왼쪽에서 오른쪽으로 움직여 간다. 하지만 2개의 예외가 존재한다. 쓰기단계 : 이 단계에서는 결과를 데이터 패스의중앙에 있는 레지스터 파일에다 쓴다 PC의 다음값 선정 : 증가된 PC 값과 MEM 단계의 분기 주소중 하나를 고른다. 파이프라인을 사용한다면 각 단계가 진행될때마다 PC의 값은 계속 변할 것이다. 따라서 단계 사이마다 ..

컴퓨터 구조 Ch04_"The Processor-3"

4.5 파이프라이닝에 대한 개관 파이프라이닝(Pipelining)은 여러 명령어가 중첩되어 실행되는 구현 기술이다. 오늘날에서는 보편적 기술이다. 예를들어 파이프라인되지 않는 세탁 방법을 설명하면 1. 세탁기에 한 묶음의 옷을 넣는다. 2. 세탁기가 종료되면 젖은 옷을 건조기에 넣는다. 3. 건조기가 종료되면 건조된 옷을 탁자 위에 놓고 정리한다. 4. 정리가 종료되면 같은 방 친구에게 옷을 넣어 달라고 부탁한다. 하지만 위 그림의 아랫 부분을 보는바와 같이 파이프라인 방법은 훨씬 시간이 적게 걸린다. 단계(stage)가 종료되면 해당 단계의 자원이 할당 해제되기 때문에 사용가능함을 최대로 이용하는 것이다. 각 단계를 위한 별도의 자원이 있는 한 작업들을 파이프라인화 할 수 있다. 파이프라인의 역설적인 ..

컴퓨터 구조 Ch04_"The Processor-2"

4.4 단순한 구현 4.3 의 데이터패스에 단순한 제어기능을 추가하여 단순한 구현을 만들고자 한다. LDUR, STUR, CBZ, ADD, SUB, AND, ORR 을 포함한 LEGv8의 부분집합을 구현한다. ALU 제어 LDUR, STUR 경우에는 메모리 주소를 계산하기 위한 덧셈용으로 ALU를 사용 R-type 명령어 경우에는 명령어 비트 11비트 opcode 필드값에 따라서 4가지 연산(AND, OR, SUB, ADD)중 하나를 수행 CBZ 명령어의 경우 ALU는 레지스터 입력값을 그냥 통과시킨다. 명령어의 opcode 필드와 ALUOp라 불리는 2비트 제어필드를 입력으로 ALU 제어 입력을 발생시킨다. ALUOp 가 10 일때에는 opcode 값이 ALU 제어 입력을 결정하는데 쓰인다. 이러한 제..

컴퓨터 구조 Ch04_"The Processor-1"

4.1 서론 프로세서를 구현하는 데 사용하는 원리와 기법들에 대한 설명 LEGv8 명령어 집합 핵심 부분의 구현을 설계 LDUR(lw), STUR(sw), ADD, SUB, AND, ORR, CBZ, B 모든 명령어의 첫 두단계는 다음과 같이 동일하다. 1. 프로그램 카운터(PC)를 프로그램이 저장되어 있는 메모리에 보내어 메모리로부터 명령어를 가져온다. 2. 읽은 레지스터를 선택하는 명령어 필드를 사용하여 하나 또는 두 개의 레지스터를 읽는다. LDUR, CBZ 명령어는 하나만 읽으면 되지만 대부분의 다른 명령어는 레지스터 두 개를 읽는다. PC -> Instruction Memory, Fetch Instruction Register Numbers -> Register File, Read Registe..

컴퓨터 구조 Ch02_"Language of the Computer-2"

2.6 논리연산 명령어 워드 전체가 아닌 개개 비트에 대한 연산을 논리연산이라 칭한다. Shift 연산 자리이동 연산, 더블워드 내의 모든 비트를 왼쪽 또는 오른쪽으로 이동시키고, 이동후 빈자리는 0으로 채운다. Shift left LSR Bit AND & AND, ANDI '' OR \ OR, ORI '' NOT ~ EOR,EORI ex) 000.... 00001001 (2) -> LSL 4번 >000..... 10010000(2) R-type 명령어에서 shamt 의 뜻이 shift mount를 나타낸다. ex)LSL X11, X19 #4 // reg X11 = reg X9

컴퓨터 구조 Ch02_"Language of the Computer-1"

Chapter 2. 명령어: 컴퓨터 언어 2.1 서론 명령어 집합 하드웨어의 언어를 명령어라 칭하며, 이들의 집합을 명령어 집합이라 부른다. 설명에 사용될 명령어 집합은 ARMv8이며, 부분 집합을 설명 할 때에는 LEGv8 용어를 사용하겠다. Chapter 2 에서는 명령어의 표현 방식을 배우고 이를 이해한다면 내장 프로그램 개념을 이해할 수 있다. 2.2 하드웨어 연산 LEGv8 산술 명령어는 반드시 한 종류의 연산만 지시하며, 항상 변수 세개를 갖는 형식이다. LEGv8 어셈블리언어 예시 ADD a, b, c ADD a, a, d ADD a, a, e // b, c, d, e 의 합을 a에 저장하는 예시 설계원칙 1: 간단하기 위해서는 규칙적인 것이 좋다. 연산의 피연산자(operand)는 연산될 ..

컴퓨터 구조 Ch01_"Computer Abstractions and Technology"

Chapter 1. 컴퓨터 추상화 및 관련기술 1.1 서론 컴퓨터 응용 분야의 종류와 그 특성 개인용 컴퓨터 : 낮은 가격으로 단일 사용자에게 좋은 성능을 제공 서버 : 대형 작업 수행에 이용, 보통 네트워크를 통해 접근 임베디드 컴퓨터 : 최소한의 성능, 제한된 가격과 소모전력 Post-PC 시대 PC에서 PMD(Personal mobile device)로의 변화 Server에서 크라우드 컴퓨팅으로의 변화 1.2 컴퓨터 구조 분야의 8가지 위대한 아이디어 Moore의 법칙을 고려한 설계 Gordon Moore의 법칙 : 매 18 ~ 24 개월 마다 칩에 집적되는 소자의 수가 2배가 된다. 설계를 단순화하는 추상화 여러가지 계층에서 설계를 특징짓는 추상화를 사용, 즉 하위 수준의 상세한 사항을 보이지 않..

반응형