Computer Architecture/컴퓨터 구조2022. 1. 19. 19:53[18] CH2 명령어:컴퓨터 언어 < 함정 및 결론 >

오류 : 강력한 명령어를 사용하면 성능이 좋아진다. x86명령어가 강력한 이유 중 하나는 명령어 실행 방식을 변경하는 접두사를 가지고 있기 때문입니다. 접두사를 쓰지 않고 표준 명령어만 사용해서 데이터를 레지스터에 적재했다가 다시 메모리에 저장하는 방식을 사용할 수도 있습니다. 공평한 비교를 위해 순환문 오버헤드가 없도록 순환문으로 만들지 말고 명령어를 반복적으로 늘어놓는 방법을 쓰면 접두사를 쓴 것보다 더 빠릅니다. 오류 : 최고 성능을 얻기 위해 어셈블리 언어로 프로그램 작성하기 컴파일러의 눈부신 발전으로 어셈블리 프로그래머가 기계에 밀린다. 함정 : 바이트 주소를 사용하는 컴퓨터에서 인접 워드 간 주소 차이가 1이 아니라는 사실을 잊는것. 많은 어셈블리 프로그래머들이 주소를 하나 증가시키면 다음 워..

[14] CH2 명령어:컴퓨터 언어 < MIPS 버전 6 >
Computer Architecture/컴퓨터 구조2022. 1. 19. 17:19[14] CH2 명령어:컴퓨터 언어 < MIPS 버전 6 >

프로그램 번역과 실행 이번 장에서는 비휘발성 저장장치 파일에 저장되어 있는 C프로그램을 컴퓨터가 실행할 수 있는 프로그램으로 변환하기 위한 4단계를 설명한다. 밑의 그림은 이러한 번역 단계를 계층적으로 보여줍니다. 어떤 시스템은 번역 시간을 줄이기 위해 이 중 몇단계를 하나로 합치기도 하지만, 논리적으로는 이 4단계를 거쳐야 합니다. 이 장에서는 번역 계층 에 따라 설명을 진행합니다. 컴파일러 컴파일러는 C프로그램을 엄셈블리 언어 프로그램으로 바꿉니다. 어셈블리 언어 프로그램은 컴퓨터가 이해할 수 있는 명령의 기호 형태입니다. 상위 수준 언어 프로그램은 어셈블리 언어보다 문장 수가 훨씬 적으므로 프로그래머의 생산성이 높아집니다. 1975년 당시에는 메모리가 부족하고 컴파일러가 비효율적이였기 때문에 운영체..

[13] CH2 명령어:컴퓨터 언어 < MIPS 버전 5 >
Computer Architecture/컴퓨터 구조2022. 1. 19. 16:15[13] CH2 명령어:컴퓨터 언어 < MIPS 버전 5 >

32비트 수치와 주소를 위한 MIPS의 주소 지정 방식 MIPS명령어의 길이를 32비트로 고정한 덕에 하드웨어가 간단해지기는 했지만, 명령어 내에 32비트 상수나 32비트 주소를 표시할 수 없어 불편한 점도 있다. 이 절에서는 32비트 상수 처리를 위한 일반적 해법을 제시하고, 이어서 32비트 명령어 주소를 분기나 점프 명령어 내에 표시하기 위한 최적화 방안을 보입니다. 32비트 수치 피연산자 대부분 16비트 필드면 충분하지만 대에 따라서는 더 큰 상수가 필요합니다. 이럴 때를 위해 MIPS는 레지스터의 상위 16비트에 상수를 넣은 lui(load upper immediate)명령어를 제공합니다. 하위 16비트는 그 다음에 나오는 다른 명령으로 채울 수 있습니다. 32비트 상수의 로딩 예 레지스터 $s0..

[11] CH2 명령어:컴퓨터 언어 < MIPS 버전 4 >
Computer Architecture/컴퓨터 구조2022. 1. 19. 12:11[11] CH2 명령어:컴퓨터 언어 < MIPS 버전 4 >

하드웨어 프로시저 지원 프로시저(procedure)나 함수는 이해하기 쉽고 재사용이 가능하도록 프로그램을 구조화하는 방법 중 하나입니다. 프로시저는 프로그래머가 한 번에 한 부분씩 집중해서 처리할 수 있게 해줍니다. 인수(parameter)는 프로시저에 값을 보내고 결과를 받아 오는 일을 하므로, 프로그램의 다른 부분 및 데이터와 프로시저 사이의 인터페이스 역할을 합니다. 프로시저는 소프트웨어에서 추상화를 구현하는 방법중 하나입니다. 프로그램이 프로시저를 실행할 때도 다음과 같이 여섯단계를 거칩니다. 1. 프로시저가 접근할 수 있는 곳에 인수를 넣는다. 2. 프로시저로 제어를 넘긴다. 3. 프로시저가 필요로 하는 메모리 자원을 획득한다. 4. 필요한 작업을 수행한다. 5. 호출한 프로그램이 접근할 수 있..

[10] CH2 명령어:컴퓨터 언어 < MIPS 버전 3 >
Computer Architecture/컴퓨터 구조2022. 1. 19. 10:15[10] CH2 명령어:컴퓨터 언어 < MIPS 버전 3 >

논리 연산 명령어 초기의 컴퓨터는 워드 전체에 대한 처리에만 관심을 가졌으나, 워드 내 일부 비트들에 대한 연산, 각각의 비트에 대한 연산도 필요하다는 것이 명백해졌습니다. 비트들을 워드로 묶는 패키징 작업과 워드를 비트 단위로 나누는 언패키징 작업을 간단하게 하는 명령어들이 프로그래밍 언어와 명령어집합에 추가되었습니다. 이러한 논리 연산 명령어라 지칭합니다. 이번시간에는 MIPS의 논리 연산을 보여줍니다. 1. shift 연산 워드 내의 모든 비트를 왼쪽 또는 오른쪽으로 이동시키고, 이동 후 빈 자리는 0으로 채웁니다. MIPS 자리이동 명령어의 실제 이름은 s11(shift left logical)과 sr1(shift right logical)입니다. 다음은 위의 연산을 수행하는 MIPS명령어이고 단..

[9] CH2 명령어:컴퓨터 언어 < MIPS 버전 2 >
Computer Architecture/컴퓨터 구조2022. 1. 16. 22:07[9] CH2 명령어:컴퓨터 언어 < MIPS 버전 2 >

명령어의 컴퓨터 내부 표현 거의 모든 명령어가 레지스터를 사용하기 때문에 레지스터 이름을 숫자로 매핑하는 규칙이 있어야 합니다. MIPS에서는 레지스터 $0에서 $7까지는 레지스터번호 16~23번까지로, $t0에서 $t7까지는 번호 8에서 15번까지 매핑합니다. MIPS 어셈블리 언어를 기계어로 변환 예) add $t0, $s1, $s2 다음 어셈블리 명령어의 실제 MIPS언어 버전을 십진수와 이진수 형태로 표현하라. 십진수 표현은 다음과 같습니다. 명령어의 각 부분을 필드(field)라 부릅니다. 처음과 마지막 필드는 더셈에 사용할 첫 번째 레지스터 번호, 세 번째 필드는 두 번째 피연산자 레지스터 번호를 나타냅니다. 네 번째 필드는 계산 결과가 들어갈 레지스터의 번호입니다. 이 명령어에서 다섯 번째 ..

[8] CH2 명령어:컴퓨터 언어 < MIPS 버전  >
Computer Architecture/컴퓨터 구조2022. 1. 16. 19:19[8] CH2 명령어:컴퓨터 언어 < MIPS 버전 >

컴퓨터 하드웨어에게 일을 시키려면 하드웨어가 알아들을 수 있는 언어로 말을 해야합니다. 컴퓨터 언어에서 단어를 명령어(instruction)이라 하고 그 어휘를 명령어 집합(instruction set)이라 합니다. 이번 장에서는 실제 컴퓨터의 명령어 집합을 살펴봅니다. 이 글에서 사용할 명령어 집합은 MIPS를 택했는데, MIPS는 1980년대 이후에 설계된 명령어 집합들을 대표할 만한 것 중 하나입니다. 2장 마지막 쯤에 MIPS 말고도 널리 쓰이는 명령어 집합이 있는데 간단히 살펴볼 예정입니다. 1. ARMv7은 MIPS와 유사합니다. 최근 엄청나게 많은 ARM프로세서가 제조되어 세계에서 가장 많이 쓰이는 명령어 집합이 되었습니다. 2. Intel x86은 PC와 포스트PC시대 클라우드 컴퓨터 모두..

[9] CH2 명령어:컴퓨터 언어 < Arm 버전 >
Computer Architecture/컴퓨터 구조2022. 1. 13. 15:36[9] CH2 명령어:컴퓨터 언어 < Arm 버전 >

예를 들어 우리가 C언어를 작성하고 있다고 합시다. 이 C언어는 어떤 동작을 통해 컴퓨터에 전달될까요? C code f = (g+h) - (i+j)가 있다면, Compiled ARM code ADD t0, g, h ; temp t0 = g+h ADD t1, i, j ; temp t1 = i+j SUM f, t0 ,t1 ; f = t0-t1 으로 구성됩니다. ARM는 아래의 그림과 같이 16x32bit의 레지스터로 구성됩니다. 32비트 크기의 플립플롭이 16개 배열되어있는 구조이고, 32bit의 데이터를 우리는 word라 부릅니다. 어떤 연산을 할때, 메모리또는 레지스터로 부터 값을 로드하여 정보를 가져오고 이값을 연산한 후, 레지스터 또는 메모리에 다시 저장합니다. 메모리는 어떻게 구성되어 있을까요? 메..

[6] CH1 컴퓨터 추상화 및 관련 기술 < 오류 및 함정 >
Computer Architecture/컴퓨터 구조2022. 1. 12. 00:06[6] CH1 컴퓨터 추상화 및 관련 기술 < 오류 및 함정 >

이 절에서는 많은 사람들이 공통적으로 잘못 알고 있는 부분에 대해 설명한다. 함정 : 컴퓨터의 한 부분만 개선하고 그 개선된 양에 비례해서 전체 성능이 좋아지리라고 기대하는 것. 어떤 컴퓨터에서 100초 걸리는 프로그램이 있는데, 그중 80초는 곱하기 계산에 소요된다고 가정하자. 이 프로그램이 5배 빠르게 실행되게 하려면 곱셈 속도를 얼마나 개선해야 하는가? 개선 후의 프로그램 실행시간은 Amdahl의 법칙으로 알려진 다음 식으로 표현할 수 있다. 개선 후 실행시간 = (개선에 의해 영향을 받는 실행시간 / 개선의 크기) + 영향을 받지 않는 실행시간 이 문제의 경우 개선 후 실행시간 = 80/n + 20이다. 5배 성능 개선을 원하므로 개선 후 실행시간은 20초가 되어야한다. 20초 = 80/n + 2..

image