본문 바로가기
728x90
반응형

컴퓨터공학42

최초의 프로그래밍 언어 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 하드웨어 수준에서의 프로그래밍은 번거롭고 융통성이 떨어지기 때문에 프로그래머는 컴퓨터를 프로그래밍할 수 있는 다양한 방법은 원했다. 바로 소프트웨어이다. 앞서 보았듯이, 컴퓨터 하드웨어는 원시 이진 명령어를 처리한다. 이것은 컴퓨터 프로세서가 말할 수 있는 "언어"이다. 이 언어를 기계어(Machine Language 또는 Machine Code)라고 한다. 컴퓨팅 초기에는 사람들이 전체 프로그램을 기계어로 작성해야 했다. 더 구체적으로 말하자면, 먼저 영어로 종이에 높은 수준의 프로그램을 작성했다. 예를 들면, "다음 판매를 메모리에서 검색한 다음, 하루, 주, 연도의 누적 합계를 더하고, 추가할 세금을 계산하시오.. 2022. 8. 3.
초기의 프로그래밍 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 프로그램된 기계에 대한 필요성은 컴퓨터를 개발하기 전에도 존재해 왔다. 가장 유명한 예는 섬유 제조에 있었다. 만약 크고 붉은 식탁보를 짜고 싶다면, 단순히 베틀에 붉은 실을 넣고 작동시키면 되었다. 하지만 만약 줄무늬나 격자무늬와 같은 패턴을 옷에 넣고 싶다면 어떨까? 근로자들은 주기적으로 방직기를 패턴의 모양에 따라 변경을 해야 했고, 상당히 노동집약적이어서 패턴이 들어간 섬유를 비싸게 만들었다. 이에 대응하여 Joseph Marie Jacquard는 프로그래밍이 가능한 방직기를 개발하였으며, 1801년에 처음 시연되었다. 펀치카드에 의해 옷감에 패턴이 들어가야 할 열이 지정되었다. 구멍의 유무에 따라 특정한 실.. 2022. 8. 3.
고급 CPU 설계 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 컴퓨터는 1초에 1개 정도 계산할 수 있는 기계적인 장치에서부터 킬로 헤르츠나 메가헤르츠의 속도로 동작하는 CPU에 이르기까지 오랜 시간 동안 발전해왔다. 현대의 CPU장치는 거의 다 기가헤르츠의 속도로 동작하고 있다. 매 초 수십억 개의 명령어가 실행된다는 것이다. 전자식 컴퓨터의 초기에는 칩 내부의 트랜지스터의 스위칭 시간을 개선함으로써 프로세서의 속도를 빠르게 했다. 이전에 배운 논리 게이트와 ALU를 포함한 모든 부품들이 트랜지스터들로 구성되어 있다. 그런데 트랜지스터를 빠르고 효율적으로 만드는 것만이 다가 아니다. 프로세서 개발자들은 단순히 명령어를 빠르게 처리하는 것뿐만 아니라, 훨씬 더 복잡한 동작을 통.. 2022. 8. 2.
명령어와 프로그램 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. CPU를 강력하게 만드는 점은 programmable 하다는 점이다. 명령어의 순서를 바꾸면, CPU는 다른 일을 수행한다. 그래서 CPU는 변경하기 쉬운 소프트웨어로 제어가 가능한 하드웨어 조각이다. 이전 명령어에서 몇 가지 명령어를 추가해보겠다. SUB는 두 개의 레지스터 값을 빼기 연산하는 기능이다. JUMP는 프로그램을 새 위치로 점프시키는 것이다. 이것은 명령어 처리 순서를 바꾸거나, 명령어 몇 개를 건너뛰고 싶을 때 유용하게 사용된다. 예를 들어 "JUMP 0"는 프로그램을 처음으로 되돌아가게 할 수 있다. 자세하게 설명하자면 명령어의 뒤 4비트가 가리키는 값을 명령어 주소 (instruction addr.. 2022. 7. 31.
중앙 처리 장치 (CPU) 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 컴퓨터에서 중앙 처리 장치(Central Processing Unit; CPU)는 인간의 심장과 같다. CPU의 일은 프로그램을 실행하는 것이다. 프로그램은 instruction(명령어)라고 하는 개별적인 동작의 연속으로 구성되어 있다. 컴퓨터가 무엇을 해야 하는지 instruct(명령)하는 것이기 때문에, instruction(명령어)하고 부른다. 더하기(add)나 빼기(subtract)와 같은 수학 명령어라면, CPU는 ALU가 수학 연산을 하도록 설정할 것이다. 메모리 관련 명령어라면, CPU는 메모리에 read와 write동작을 하도록 설정할 것이다. 마이크로아키텍처(microarchitecture)라고 하는.. 2022. 7. 30.
레지스터와 RAM 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 컴퓨터가 계산한 결과가 버려진다면 계산을 해도 아무 소용이 없다. 계산 결과가 어떻게든 저장되어야지 유용하게 쓰일 수 있고, 여러 연산이 연속해서 수행될 수도 있다. 그래서 컴퓨터 메모리가 필요하다. 우리가 작업을 하다가 갑자기 컴퓨터가 꺼지면 작업하던 것이 사라지는데 이것은 컴퓨터가 Random Access Memory(RAM)을 사용하기 때문이다. RAM은 전원이 켜져 있을 때만 작업 상태 같은 것을 저장할 수 있다.(지속성 메모리(Persistent Memory)라고 불리는 다른 유형의 메모리는 전력 공급 없이도 살아남을 수 있다.) 한 비트 정보를 저장할 수 있는 회로를 구성해 보자. 우리는 다음과 같은 스스.. 2022. 7. 30.
컴퓨터는 어떻게 계산할까?-ALU편 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 컴퓨터 기능의 진정한 목적인 숫자를 구조화하고 목적에 맞는 방식으로 다루는 것이다. 이러한 작용은 컴퓨터의 산술적(Arithmetic)이고 논리적(Logic)인 부분(Unit)에서 다루어지는 데 통상적으로 이걸 ALU라고 칭한다. ALU는 컴퓨터의 수학적인 두뇌를 일컫는다. 이것은 컴퓨터에서 모든 계산을 한다. 아마 가장 유명한 ALU는 Intel 74181일 것이다. 이것이 1970년에 출시되었을 당시에 하나의 칩 안에 완전히 딱 들어맞는 완벽한 ALU였다. 부울 논리 게이트를 사용해서 74181과 같은 기능을 할 수 있는 단순한 ALU회로를 만들 수 있다. ALU는 두 개의 구성 단위를 가지고 있는데, 그것은 산.. 2022. 7. 28.
이진수로 숫자와 문자 나타내기 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 두 가지 상태는 참과 거짓 대신에 0과 1을 사용하여 나타낼 수 있다. 이것은 숫자를 나타낼 때 매우 유용하다. 만약 큰 수를 나타내고 싶다면 단순히 이진 숫자들을 더하기만 하면 되기 때문이다. 이것은 우리가 잘 알고 있는 십진법과 동일한 방식으로 작동한다. 10진수는 오직 10가지(0~9)의 한 자리의 숫자가 있다. 9보다 큰 수를 만들기 위해서는 그 앞쪽에 하나의 숫자를 추가하기만 하면 된다. 이진수에서도 똑같은 방법으로 작동한다. 예를 들어 234는 2*100, 3*10, 4*1을 합하여 얻을 수 있는데 이것은 각각의 자릿수에 곱하는 수의 차이(승수)를 주목해야 한다. 100과 10과 1, 각각의 곱하는 수는 .. 2022. 7. 28.
부울 연산과 논리 게이트 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 2가지의 상태로 정보를 표현하는 것을 이진(Binary)라고 부른다. 문자상으로 "두 가지 상태"를 일컫는다. 2가지 상태는 정확히 "참"과 "거짓"으로 나타내는 데 필요하다. 컴퓨터 안에서 On상태는 전류가 흐르고, True를 나타낸다. Off상태에서 전기는 흐르지 않고 False를 나타낸다. 이 True와 False를 이진수인 1과 0을 사용해서 나타낼 수 있다. 트랜지스터가 사용되면서 전류를 흐르게 하거나 끊는 것 이상으로 다른 수준의 전류를 허용할 수 있게 됐다. 어떤 초기의 전자 컴퓨터는 3개의 상태(Ternary-3 States)를 갖고 있는 3진법을 사용하거나 5가지 상태(Quinary-5 states).. 2022. 7. 26.
전자 컴퓨팅 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 20세기 초반 이후 사회 시스템의 규모는 예측 불가능할 정도로 계속 커졌다. 20세기 중반 인구수는 초반에 비해 대략 2배가 늘었고, 세계 무역 및 운송 네트워크는 서로 연결되었으며, 우리의 기술과 과학 수준이 더 높은 안목을 갖기 시작했고, 다른 행성을 탐험하는 것을 진지하게 고려하면서 복잡성, 관료주의 등 데이터의 폭발적인 증가로 집합 자동화와 계산의 필요성을 증가시켰다. 가장 크기가 큰 전기식 기계 컴퓨터들 중 하나는 1944년 2차 세계 대전 중 IBM이 동맹군을 위해 개발한 Harvard Mark1 이었다. 이 컴퓨터는 코일을 이용한 계전기로 작동하는 데, 계전기 안에 있는 기계식 스위치는 무거워서 열린 상.. 2022. 7. 26.
초기컴퓨팅 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 기원전 2500년 메소포타미아에서 사람들의 계산을 돕는 컴퓨팅 도구인 주판이 개발되었다. 이후, 약 4000년 동안 astrolabel (천문 관측 장치 ; 위도 계산기) 등의 천문 관측 도구, Slide rule (곱셈과 나눗셈을 돕는 계산자), 여러 가지 시계 등이 발명되어 산술 계산을 도왔다. 1613년 컴퓨터라는 단어가 처음 등장, 하나의 직업으로서 최고의 산술가로써 하루를 짧은 단위로 줄일 수 있게 해 줄 것이라 하였고, 1800년 후반에 컴퓨터라는 의미는 기계를 의미하게 됐다. 1694년 Leibniz의 Step Reckoner라는 영리한 계산 기술이 발명됐다. 주행기록계처럼 단순히 기어를 돌림으로써 농부.. 2022. 7. 24.
프로젝트 준비 과정 - PoC ( Proof of Concept ; 개념 실증) PoC ( Proof of Concept ; 개념 실증) 개발하려는 시스템의 컨셉이 정말 실현 가능한지 검증하는 작업 PoC의 실시 타이밍 PoC 계획서 PoC 목적 검토 내용이나 목표치를 명확히 하는 것이 중요 -과거 1년치 POS 데이터를 사용해 빵 추천 AI가 80% 정확도로 추천 데이터가 나오는지 검증한다 -과거 1년치 POS 데이터 연계와 빵 추천 AI기반으로 데이터 추출 처리를 1시간 이내에 할 수 있는지를 검증한다 -80%를 달성하면 다음 스텝으로 간다(본격 개발을 위한 예산 조정 등) -70~80%의 경우, 튜닝 여지 유무에 따라 다음 스텝으로 갈지를 판단한다 -70% 미만인 경우에는 2회까지 PoC를 반복한다. 그래도 달성하지 못하는 경우에는 개발을 단념한다. PoC 범위 서비스 전체에서.. 2022. 7. 24.
728x90
반응형