2023-2학기/컴퓨터구조
-
[컴구] #04. MIPS에서의 사칙 연산2023-2학기/컴퓨터구조 2023. 10. 18. 22:33
이번 글에서는 컴퓨터 내부에서 사칙 연산이 실제로 어떻게 계산되는지에 대해 좀 더 자세히 알아보도록 하겠습니다. 덧셈과 뺄셈 덧셈, 뺄셈은 컴퓨터와 사람의 계산 방법이 크게 다르지 않습니다. 손으로 계산할 때처럼 가장 오른쪽에 있는 수부터 더하고, 올림이 발생하면 올려주고, 왼쪽으로 계산을 이어나갑니다. 저희가 주목해야 할 부분은 바로 Overflow(오버플로우)입니다. 계산의 결과가 사용 가능한 하드웨어 (이 경우에서는 32비트겠죠)로 표현할 수 없는 경우입니다. 부호가 있는 수의 경우에는 오버플로우가 일어났음을 쉽게 감지할 수 있습니다. 두 양수를 더했는데 그 결과가 음수가 되었다던가, 두 음수를 더했는데 결과가 양수가 되었다던가.. 이런 경우는 부호 비트로 올림이 진행된 것이므로 오버플로우가 일어났..
-
[컴구] #03. Procedure2023-2학기/컴퓨터구조 2023. 10. 18. 20:05
Procedure 프로시저는 특정 작업을 수행하는 프로그램의 묶음을 말합니다. 프로그램을 짜다 보면 특정 작업을 반복해서 수행해야 할 때가 있잖아요? 작업 A를 100번 해야 한다고 할 때 A를 해야 할 때마다 A의 코드를 작성하지 말고, A라는 작업을 하는 프로시저를 하나 만들고 A를 해야 할 때마다 프로시저를 그냥 호출해주기만 하면 됩니다. 프로그램은 프로시져가 필요할 때 프로지서에 값을 보내고 계산된 값을 받아오는데요, 이 일을 하는 것을 Parameter(인수)라 부릅니다. 프로그램이 프로시저를 실행할 때 아래와 같은 단계를 거칩니다. 프로시저가 접근할 수 있는 곳에 인수를 넣어둔다. 프로시저로 제어를 넘긴다. 프로시저가 필요로 하는 메모리를 프로시저에게 제공한다. 필요한 작업을 수행한다. 프로시..
-
[컴구] #02. MIPS 명령어2023-2학기/컴퓨터구조 2023. 10. 9. 23:19
이전 글에서 컴퓨터 하드웨어에게 일을 시키려면 하드웨어가 알아먹을 수 있는 언어가 필요하다고 했었죠? 이렇게 컴퓨터가 알아들을 수 있는 단어를 Instruction이라고 하고, 이 Instruction의 문법을 Instruction Set이라고 합니다. 기계어(Machine Language) 역시 여러 가지가 있지만, High-Level Language인 C++, Java 등과는 반대로 Machine Language들의 구조는 대부분 비슷하기 때문에 하나만 배우면 다른 언어들도 쉽게 배울 수 있습d니다. 저는 MIPS라는 ISA(Instruction Set Architecture)를 이용해 기계어에 대한 설명을 진행할 것입니다. 기본 연산 그럼 이제 MIPS에 존재하는 Instruction을 하나하나 살..
-
[컴구] #01. Introduction2023-2학기/컴퓨터구조 2023. 10. 9. 21:00
컴퓨터구조 공부의 특성 상, 전체적인 흐름을 파악하는 것이 굉장히 중요한데요. 그렇기 때문에 이 글은 이제부터 저희가 알아볼 내용에 대해 정말 간단하게 쭉 훑는 느낌입니다. 그래서 전체적인 흐름과 용어 정리 위주로 글이 작성될 예정이라 조금 난잡해보일 수 있는 점 양해 부탁드립니다. 컴퓨터구조 분야에서의 7가지 아이디어 지난 60년간 컴퓨터 분야에서는 엄청난 발전이 있었습니다. 이런 과정에서 가장 자주 사용되고, 중요하다고 여겨지는 7가지의 아이디어가 있는데요, 이것부터 하나하나 살펴보도록 합시다. 1. Use Abstraction to Simplify Design : 추상화를 통한 설계 단순화 하드웨어, 소프트웨어 개발자들이 설계를 할 때 아주 디테일한 부분들은 생략을 하고, 상위 수준 모델에 집중을 ..
-
[컴구] #00. Course Information2023-2학기/컴퓨터구조 2023. 10. 9. 18:04
과목 명 : Computer Architecture (컴퓨터구조 / 컴구) 교재 및 레퍼런스 Computer Organization and Design, MIPS Edition (6th Edition) 교수님이 배포해 주신 수업용 슬라이드 목표 C, Java 등의 상위 언어로 작성된 프로그램을 하드웨어는 어떻게 실행하는지 이해하기 소프트웨어와 하드웨어는 어떻게 소통하는지 이해하기 프로그램의 성능은 어떻게 결정되고, 이를 개선하려면 어떻게 해야 하는지 이해하기 더 좋은 성능의 하드웨어를 설계하려면 어떻게 해야 하는지 이해하기