on
컴퓨터 구조 - 1
공부를 시작하며
비전공자로써 컴퓨터 구조에 대해 공부한 것들을 정리하기 위해 글을 썼다.
참고
KOCW 최규상 교수님 2020-2학기 컴퓨터 구조 강의를 듣고 작성.
컴퓨터 구조란?
컴퓨터 공학에서 컴퓨터 시스템의 기능, 조직, 구현에 대한 법칙과 방법을 통칭한다. 명령어 집합 구조(ISA) 설계 및 구현을 의미한다. 위키피디아에서 가져온 컴퓨터 공학의 정의다. 시작부터 무슨말인지 모르겠다. 컴퓨터가 어떻게 우리의 프로그램을 실행시키는지에 대해서 배우는건가? 싶다. 학과 전공에서 비슷한 수업을 들었을 때에는 processor가 어떤식으로 instruction을 처리하는지 배웠던 것 같다. 그리고 pipeline, cache..등등…
ISA(Instruction Structure Architecture)
먼저 Instruction이 뭔지에 대해 대략적인 감을 잡으려 했었다. 솔직히 그냥 그대로 해석해도 된다. “명령어” 라고 해석이 되는데, instruction을 알기전에 먼저 program에 대해 정확히 알고가면 이해가 편하다.
computer program은 특정 작업을 수행하기 위해 컴퓨터에서 실행 가능한 instructions의 모음이다.
여기서 특정 작업이란 우리가 원하는 동작을 뜻하고, instructions의 모음은 우리가 작성한 코드를 뜻하는 것이다. 컴퓨터의 입장에서 더욱 정확히 말하자면 우리가 작성한 코드는 컴퓨터의 해당 processor(CPU)가 이해할 수 있게 “machine language(기계어)”로 번역이 되고 그 machine language는 CPU가 직접 해독하고 실행할 수 있는 컴퓨터 언어를 뜻한다. Processor(CPU)마다 다른 ISA을 갖고 있기에 다른 processor를 가진 컴퓨터들 사이의 프로그램 실행속도에는 차이가 있을 수 있는 것이다.
Kocw강의에서는 ISA를 H/W와 S/W의 interface라고 설명했다.
S/W는 instruction set으로 이뤄져 있고, H/W는 이를 실행한다.
아까 위의 내용으로 다시 말해보자면,
Code(S/W)는 instruction set으로 이뤄져 있고, CPU(H/W)는 이를 실행한다.
ABI(Application Binary Interface)
2개의 binary program modules 사이의 interface.
뭔소리인지 모르겠다. 풀어서 말한 것을 보면,
다른 컴퓨터 system에서 프로그램이 실행될 수 있는지의 조건.
같은 ABI를 쓰는 컴퓨터에서는 프로그램이 서로 잘 돌아간다. 라고 kocw강의 교수님께서 설명해주셨다.
위키피디아를 참고해서 더 자세한 정의를 알아보면,
Machine code에서 data structure와 computational routine에 접근하는 방법.
이라고 한다.
Performance
-
Response time(latency) : 하나의 일을 하는데 걸린 시간
-
Throughput : 단위 시간 당 몇개의 일을 하는가
- Performance를 올리는 방법
- Processor를 더 좋은걸로 바꿔서 latency는 낮추고, throughput은 높일 수 있다.
- Adding processor : throughput이 높아진다.(한번에 여러가지 일 처리 가능) latency에는 영향을 안준다.
-
Elapsed time
-
total response time
-
system performance를 결정한다.
-
-
CPU time
- 주어진 일을 처리하는데 걸린시간(오직 CPU에서만)
- user cpu time 과 system cpu time으로 나뉜다.
- user cpu time : 우리가 동작시키는 프로그램 코드에서 보내는 시간
- system cpu time : 우리의 프로그램 대신 operating system kernel 에서 코드를 동작시키는데 보내는 시간
- 각각의 프로그램은 CPU와 system성능에서 다르게 영향받는다.