2025 동계 모각코 2주차

강리아·2026년 1월 19일

2025 동계 모각코

목록 보기
3/7

Computer Abstraction & Technology

추상화

추상화란 복잡한 내부는 숨기고 중요한 개념만 잡아서 이해하자는 것이다. 컴퓨터는 용량이 크고 신뢰성이 높고 동시에 여러 작업이 가능해야 한다. 이를 위해서 사용하는 개념이 추상화이다. 공통 구조를 빠르게 설계할 수 있고, 고장날 것을 대비해 이중화/삼중화를 할 수 있다.

프로그램 아래에는 무엇이 있나?

우리가 작성한 고급 언어 코드는 명령어로 변환된다. 여기서의 명령어는 instruction인데 이것을 command와는 다르다. command는 사람에게 내리는 명령이고 instruction은 소프트웨어가 하드웨어에게 무엇을 할지 알려주는 문장이다. 모든 instruction은 0과 1로 표현되고 같은 코드라도 기계마다 0과 1의 의미는 다를 수 있다.

ISA (Instruction Set Architecture)

구조계층

  • A.S (Application Software)
  • S.S (System Software)
  • H/W (Hardware)

ISA

ISA란 instruction의 집합으로 만든 구조물이라 생각하면 된다. 사람을 위한 건물이 아닌 프로그램을 위한 건물이라고 생각하면 쉽다. ISA는 소프트웨어와 하드웨어끼리의 약속인데 instruction이 어떻게 동작하는지를 정의한 것이다. ISA가 같으면 S.S, H/W를 바꾸어도 괜찮다. 즉, 구현은 다르더라도 구조가 같으면 호환이 가능하다.

데이터와 제어

컴퓨터에 들어오는 입력은 크게 보면 프로그램과 데이터이다. 프로그램은 무엇을 할지를 알려주고, 데이터는 그 대상이라고 생각하면 된다. 이 둘은 따로 노는 것이 아니라, 모두 제어 신호에 의해 움직인다.
여기에서 중요한 관점이 하나가 있는데 보통은 건물이 있고 그 사이를 길이 연결한다고 생각하기 쉬운데, 컴퓨터 구조에서는 반대이다. 모든 것이 길 위에 있고, 그 위에 건물이 올라가 있다고 생각해야 한다.
이 길 위에서 누가 지나갈지를 정해주는 것이 멀티플렉서(MUX)이다. 멀티 플렉서는 신호등처럼 여러 입력 중 하나만 선택해서 보내준다. 그래서 단순히 데이터만 있으면 안 되고, 어느것을 선택할지를 알려주는 컨트롤 신호가 필요하다. 이 컨트롤은 보통 하나가 아니라 여러 개가 동시에 작동한다.
내부 동작이 너무 복잡하기 때문에 고급언어의 statement라는 말로는 설명이 안되고, 결국 하드웨어가 이해할 수 있는 instruction 단위로 내려가게 된다.

프로세서 내부 구조

프로세서 내부를 보면 생각보다 엄청 작고, 그 안에 부품들이 빽빽하게 들어가 있다. 요즘 프로세서가 빠른 이유는 이 집적도가 굉장히 높기 때문이다.
하지만 계속해서 위로 쌓을 수는 없는데, 바로 열(과열) 때문이다. 너무 많이 쌓게되면 열이 빠져나가지 못해서 녹을 수 있다.
즉, 프로세서 구조를 설계할 때는 무조건 많이 넣는 것이 아니라 열, 전력, 성능을 동시에 고려해야 한다.

성능

성능을 말할 때 중요한 것은 속도에 대한 기준이다. 여기에서는 두가지 관점이 있다.

응답시간

사용자가 어떤 작업을 했을 때 결과가 나올 때까지 얼마나 걸리는 지를 말한다. 이건 작을수록 무조건 좋다.

처리율

단위 시간 동안 얼마나 많은 일을 처리하느냐이다. 서버처럼 여러 요청을 동시에 처리하는 환경에서는 이 값이 클수록 좋다.

클럭과 실행시간

컴퓨터는 시간을 사람처럼 초 단위로 재지 않는다. 기준은 항상 클럭(clock)이다.

  • Clock Rate: 1초에 클럭이 몇 번 울리는지
  • Clock Cycle Time: 클럭 한 번에 걸리는 시간

이 둘은 반대 관계이다. Clock Rate가 높아지면 Cycle Time은 짧아진다.

프로그램이 실행되는 전체 시간은 instruction의 개수, instruction 하나당 클럭이 몇 번 필요한지(CPI), 클럭 한 번에 걸리는 시간을 곱한 것이다.

실행시간 = Instruction Count * CPI * Clock Cycle Time

CPI와 전체 성능

CPI는 instruction 하나를 처리하는 데 평균적으로 몇 클럭이 필요한지를 말한다. 숫자만 보면 CPI가 낮을수록 무조건 좋다고 생각하기 쉽다. 하지만 instruction 개수가 다르면 이야기가 달라진다. 어떤 컴퓨터는 CPI는 낮은데 instruction을 많이 실행할 수도 있고, 어떤 컴퓨터는 CPI는 조금 높아도 instruction의 수가 훨씬 적을 수 있다. 그래서 CPI만 보고 성능을 판단하면 안 된다. 중요한 것은 전체 클럭 사이클 수, 즉 실제로 걸린 시간이다.

0개의 댓글