컴퓨터시스템구조

프로시저 호출 단계 레지스터에 매개변수 배치 제어권을 프로시저에게 줌 프로시저(callee)를 위한 저장공간 확보 프로시저의 작업 수행 caller를 위한 레지스터 결과 배치 호출 장소로 돌아가기 레지스터 $v0~1 결과값 64비트일수도 있기때문에 2개 존재 (레지스터 2~3) $a0~3 아규먼트 (레지스터 4~7) $t0~9 임시값 callee가 덮어쓸수 있다. (레지스터 8~15) $s0~7 saved callee에 의해 저장/복원 (레지스터 16~23) $gp 정적 데이터를 위한 글로벌 포인터 (레지스터 28) $sp 스택 포인터 (레지스터 29) $fp 프레임 포인터 (레지스터 30) $ra 리턴 주소 (레지스터 31) 프로시저 호출 명령어 프로시저 호출: jump & link jal Proced..
조건부 연산자 조건이 참인 경우 레이블이 지정된 명령어로 분기 그렇지 않은 경우 순차적으로 계속 진행 beq rs, rt, L1 if (rs == rt)이면 L1으로 분기 bne rs, rt, L1 if (rs != rt)이면 L1으로 분기 j L1 L1으로 무조건 점프 If 문 C 코드 if (i==j) f = g+h; else f = g-h; f : $s0 g : $s1 h : $s2 i :$s3 j : $s4 MIPS 코드 bne $s3, $s4, Else add $s0, $s1, $s2 j Exit Else: sub $s0, $s1, $s2 Exit: ... While 문 C 코드 while (save[i] == k) i += 1; i : $s3 k : $s5 save 주소 : $s6 MIPS 코..
논리 연산자 연산자 C MIPS Shift Left srl Bitwise AND & and, andi Bitwise OR | or, ori Bitwise NOT ~ nor Shift 연산자 R-포맷 op rs rt rd shamt funct 6비트 5비트 5비트 5비트 5비트 6비트 shamt : 얼마나 많은 위치를 이동할지 Shift left logical (sll) 왼쪽으로 시프트하고 0비트로 채운다. i만큼 sll하면 2^i 만큼 곱한다. Shift right logical (srl) 오른쪽으로 시프트하고 0비트로 채운다,. i만큼 srl하면 2^i 만큼 나눈다. (unsigned 일때만) AND 연산자 단어의 비트를 마스크하는 데 유용 일부 비트를 선택하고 다른 비트를 0으로 지운다. 둘다 1일때..
명령어 표현 명령어는 2진수로 인코딩 = 기계어 MIPS 명령어 32비트 명령어로 인코딩 연산 코드(opcode)를 인코딩하는 형식의 작은 수, 레지스터 번호 등 규칙성 레지스터 번호 $t0 – $t7 : 레지스터 8 – 15 $t8 – $t9 : 레지스터 24 – 25 $s0 – $s7 : 레지스터 16 – 23 레지스터를 표현하는데 5비트 필요 32 = 2^5이기 때문이다. MIPS R-포맷 명령어(add, sub) Register 포맷 op rs rt rd shamt funct 6비트 5비트 5비트 5비트 5비트 6비트 op : 연산 코드(opcode) rs : 첫 번째 소스 레지스터 번호 rt : 두 번째 소스 레지스터 번호 rd : 대상 레지스터 번호 shamt : shift amount (현재..
부호 없는(Unsigned) 정수 n비트 숫자 x = x_(n-1)2^(n-1) + x_(n-2)2^(n-2) + ... + x_0 2^0 범위: 0 ~ +2^n - 1 예제 0000 0000 0000 0000 0000 0000 0000 1011_2 = 11_10 32 bits 비트 사용 0 ~ +4,294,967,295 부호 있는(Signed) 정수 n비트 숫자가 주어지면 x = -x_(n-1)2^(n-1) + x_(n-2)2^(n-2) + ... + X_0 2^0 범위: -2^(n-1) ~ +2^(n-1)-1 예제 1111 1111 1111 1111 1111 1111 1111 1100_2 = -4_10 32 bits 비트 사용 -2,147,483,648 ~ +2,147,483,647 MSB : 부호 ..
산술 연산 덧셈, 뺄셈 : 피연산자가 세개 두 개의 소스와 하나의 대상 add a, b, c # a = b + c sub a, b, c # a = b - c 디자인 원칙 1: 단순은 규칙을 선호한다. 규칙성이 있으면 구현이 더 간단하다. 단순성은 더 낮은 비용으로 더 높은 성능이 가능하다. 산술 예제 C 코드 f = (g + h) - (i + j); MIPS 코드 add t0, g, h # temp t0 = g + h add t1, i, j # temp t1 = i + j sub f, t0, t1 # f = t0 - t1 레지스터 피연산자 산술 명령어는 레지스터 피연산자를 사용한다. MIPS에는 32비트 × 32개 레지스터 파일이 있다. 자주 액세스하는 데이터에 사용 0~31번 워드(word) : 32비..
성능 응답 시간(Response time) : 작업을 수행하는 데 걸리는 시간 처리량(Throughput) : 단위 시간당 수행된 총 작업(예: 작업/트랜잭션/… 시간당) 응답 시간과 처리량은 어떤 영향을 받는가? 응답시간 : 프로세서를 더 빠른 버전으로 교체 처리량 : 더 많은 프로세서를 추가 이 수업에서는 응답 시간에 집중 → 싱글코어에 집중한다. 상대적 성능 성능 = 1 / 실행 시간 "X는 Y보다 n배 빠릅니다." X 성능 / Y 성능 = Y 실행시간 / X 실행시간 = n 예: 프로그램을 실행하는 데 걸린 시간 A : 10초, B : 15초 B 실행시간 / A 실행시간 = 15s / 10s = 1.5 따라서 A는 B보다 1.5배 빠릅니다. 실행 시간 측정 경과 시간(Elapsed time) 모든..
컴퓨터 혁명 컴퓨터 기술의 진보는 점점 가속화 되고 있다. 또한 이전에 생각하지 못한 새로운 애플리케이션을 실현 가능하게 만든다. 자동차의 컴퓨터 휴대폰 인간 게놈 프로젝트 월드와이드웹 검색 엔진 이제는 컴퓨터는 널리 보급되어 있다. 컴퓨터의 종류 개인용 컴퓨터(PC) 범용, 다양한 소프트웨어 비용/성능 상충관계에 따라 달라질 수 있다. 서버 컴퓨터 네트워크 기반 고용량, 성능, 신뢰성 소형 서버부터 건물 규모까지 다양하다. 슈퍼컴퓨터 서버 유형 고급 과학 및 공학 계산 최고의 성능을 제공하지만 전체 컴퓨터 시장에서 작은 부분을 차지한다. 임베디드 컴퓨터 시스템의 구성요소로 숨겨져 있다. 엄격한 전력/성능/비용 제약 연산 복잡도에 따라서 배터리가 기하급수적으로 닳는다. 따라서 연산이 복잡하면 안된다. 포..
우리는 컴퓨터를 사용하지만 정작 내부의 구조에 대해서는 잘 알지 못한 채로 사용하고 있다. 컴퓨터 시스템 구조 강좌에서는 디자인 아키텍처(구조)뿐만 아니라 다양한 콘셉트와 기법들에 대해서 알아갈 것이다. 교재는 컴퓨터 구조 및 설계, 하드웨어/소프트웨어 인터페이스(6th Edition)를 사용한다.