Computer Science 7

[Computer Science] Register & RAM

이전까지 다뤘던 부분들은 모두 단방향 로직이었다. 받아낸 아웃풋을 저장하지 않으면 컴퓨터가 제대로 동작할리 없는데, 이번엔 전자기기의 전원이 켜져 있을 때 단기간 저장을 해내는 메모리의 구조에 대해 다뤄볼까한다. PC게임을 즐기며 성능에 관심이 있거나 관심을 가져야만 했던 상황을 경험해본 사람이라면 - 해보고 싶은 고사양 게임이 내 PC에서 구동될지 알아본다거나.. - 램이라는 하드웨어에 대해 들어봤을 것이다. Random Access Memory의 약자로, 기기의 전원이 켜져있는동안 데이터를 저장하는 부품이다. HDD, SSD 같은 지속성 메모리(persistent memory)가 전원 공급 없이도 보존되는 것과는 다르다. 지속성 메모리에 대해선 차후 다뤄보기로하고, 램에 대해 파헤쳐보자. 메모리의 기..

Computer Science 2023.02.18

[Computer Science] Arithmetic Logic Unit(ALU)는 어떻게 작동할까

컴퓨터의 작동을 이해하기 위해서는 많은 추상화 개념들을 이해해야한다. 이전 포스팅 중 하나에서 Or, Xor, and 게이트들을 추상화한 그림으로 표현하였는데, 여기서 더 나아가 이번 포스팅에서는 컴퓨터가 연산을 하기 위한 ALU의 작동 원리에 대해 알아본다. ALU란 Arithmetic & Logic Unit, 즉 산술, 논리장치를 의미한다. 먼저 산술 기능에 대해 보자. 모든 산술의 기본인 덧셈을 풀어보자. 단일비트의 2진수 두개를 더해본다고하자. 0+0=0, 1+0=1, 0+1=1 이다. 이전에 알아본 Xor게이트의 결과값과 같다는걸 볼 수 있다. 올림이 있을 때 약간 복잡해진다. 1+1=10이 되는데, 보다시피 1의자리는 0이기에 역시 Xor게이트의 결과값과 같으나 2의 자리에 올림수가 있어 10..

Computer Science 2022.11.29

[Computer Science] 숫자와 문자의 이진수 표현

앞선 포스팅에서 간단한 연산들로 인풋에 따른 아웃풋이 어떻게 true/false로 나오는지 알아봤다. 이번엔 true/false, 즉 1과 0의 이진수로 어떻게 우리가 사용하는 십진수 숫자와 문자들을 표현할 수 있는지 보려고한다. 인간은 십진수 아라비아 숫자를 사용하고, 대부분의 언어에서도 수를 나타내는 단어들이 십진법으로 표현된다. 인간이 원시시대부터 숫자를 셀 때 손가락을 사용하였기 때문이라는게 중론이다. 고대프랑스인들은 발가락도 썼나보다 우리가 사용하는 십진수에서 0~9까지는 첫자리에, 10 단위의 수는 둘째자리에, 10의 제곱 단위의 수는 셋째자리에 표현된다. 즉, 256이라는 수는 6 + 5*10 + 2*10*10인 것이다. 이진수도 같은 원리로 생각하면 이해가 빠르다. 0~1까지는 첫자리에, ..

Computer Science 2022.11.24

[Computer Science] 머신러닝, 딥러닝은 쉽게 말해..

머신러닝과 딥러닝은 처음 들었을 때부터 흥미를 끄는 개념들이었다. 컴퓨터가 학습한다니 그게 어떻게 가능한거지. 이번 포스팅에서는 전문적 표현은 쓰지않고 머신러닝과 딥러닝의 개념에 대해 다뤄보려고한다. 인간의 뇌에서 사물인지가 어떻게 이루어지는지에 대해선 아직도 그 프로세스가 완전히 연구되지는 않았다고 하지만 어린아이의 학습을 예로 들어서 말해본다. "삼촌 저거 모야~?" "응 저건 고양이야" "고양이~" 어린 조카가 길을가다 본 고양이가 뭔지 물어본다. 당신은 고양이라고 답을 해줬고, 조카는 이제 작고 털이 북실북실한 네발달린 귀여운 동물을 고양이로 인지한다. 그것이 무의식중이건 아니건 말이다. "삼촌 저기 고양이있다!" "저건 고양이가 아니고 강아지야" "강아지야?" "응. 강아지." 이후 길을 가다가..

Computer Science 2022.11.13

[Computer Science] 이진수 연산의 로직 게이트

컴퓨터가 회사의 묵직한 솔루션을 돌리거나 콜 오브 듀티 같은 게임을 구동시키는 것도 그 근원은 true/false 스위치에서 시작한다. 지난번 포스팅에서 그 물리적 스위치의 발달에 대해 다뤘다면 이번 포스팅에서는 단순한 0/1 스위치가 어떤 로직으로 연산을 뻗쳐나갈 수 있는지에 대한 첫단계로 Not, And, Or, Xor에 대해 알아본다. 전자컴퓨팅이 태동하기 전부터 이미 이진수 연산에 대한 로직은 연구가 꽤나 진행되어있었다. 19세기 조지 부울(George Boole)이라는 학자에 의해 부울 대수학이란 이름으로 정립되었는데, 이진수 연산은 그 학자의 이름을 따서 Boole 연산이라 불리게 되었고, 오늘날에 이르러서도 프로그래밍 True/False 구분에 사용되는 boolean이라는 단어의 근원이 되었..

Computer Science 2022.11.09

[Computer Science] 전자컴퓨팅의 여명

컴퓨터 작동의 근원은 어디일까? 바로 on/off, 즉 0/1 스위치일 것이다. 단순한 0/1 스위치들이 어떻게 모여 컴퓨팅을 하는지는 차후 별도로 포스팅할 예정이다. 비싼 계산기 시절의 컴퓨터는 거대하고 복잡한 배전반과 코드들의 집합체였다. 필요한 계산법에 따라 사람이 직접 코드들을 뽑고 끼워 맞추는 것이 당시의 프로그래밍이었다. 요즘도 쓰이는 코딩(coding)이라는 단어가 여기에서 유래했다고. 온오프 스위치의 자동화는 계전기라고도 불리는 릴레이의 사용으로 가능해졌다. 초창기의 릴레이는 기계장치였다. 제어선에 전기가 흐르면 전자기장이 발생하여 스위치를 당겨주고 밀어주고 하는 식으로 사용되었다. 말하자면 전선이 수도관이고 제어선이 수도밸브라고 볼 수 있을 것이다. 기계적인 움직임이었기에 동작속도가 한계..

Computer Science 2022.11.01

[Computer Science] 원시 컴퓨터

어릴 때 컴퓨터에 대해 알고싶어서 책들을 뒤져보면 항상 컴퓨터의 역사가 먼저 나왔다. 어떤 책이건 주판, 원시적 계산기 등이 먼저 언급됐는데 당시엔 이해가 가지 않았다. 주판과 컴퓨터가 무슨 연관이 있다는거지. 인간은 항상 숫자를 편리하고 효율적으로 다루고 활용하기 위해 노력해왔고 이에 따라 인류는 주판을 만들어 사용하고 기계적으로 작동하는 계산기를 만들어 사용하였다. 전쟁이 과학을 급속 발전시키는 촉매가 되기도하는데, 컴퓨터의 경우에도 그러했다. 예를들어 포를 발사할 각도를 설정할 때 거리와 습도, 온도, 바람의 방향과 세기 등 여러 변수를 가지고 계산하여야 한다. 이러한 계산을 인간보다 빠르고 정확하게 해줄 수 있는 기계가 있다면 전쟁에서 유리할 것이다. 그런 유리함을 점하기 위한 노력으로 계산기가 ..

Computer Science 2022.11.01