분류 전체보기
-
시스템 & iTerm2 설정Languages & Tools/vim 2021. 4. 18. 20:14
vim을 사용하기에 앞서서, 정말 멋진 프로그래머가 된 것 같은 느낌은 정말 중요하다! 음악을 틀어놓고 천재 해커가 된것같은 느낌! 그 느낌을 위해서는 일단 세팅이 필요하다. 윈도우 컴퓨터도 사용했지만, 최근에는 맥을 선호해서 회사에서도 백북을 사용하고, 개인용으로는 iMac과 Macbook Air를 사용하고있다. 자세한 설치와 시스템 세팅은 아래 블로그 글이 정말로 자세하게, 차근차근 설명해주셨다. (정말 감사합니다!) 2017년도 글이어서, 몇가지 업데이트가 되어있지 않은 부분이 있는데, 그중에 하나가 iterm을 설치할 떄 커멘드가 조금 달랐다. 아래와같이 설치하면 된다. brew install --cask iterm2 또한, iterm2 세팅을 할 때, 단어 단위로 스킵하는 동작에 대한 설명이 조..
-
MIPS, Memory Operands and Constant(Immediate) OperandsComputer Science/Computer Architecture and Organization 2021. 4. 4. 16:25
Memory Operands 위의 예시에서는 간단한 더하기 빼기였지만, 실제 프로그래밍에서는 훨씬더 복잡한 컨셉이 등장한다. 예를들어 Array, Tree, Linked List 또는 Map과 같은 것들이다. 어떻게 컴퓨터는 이런 큰 Data Structure를 접근하고 나타낼 수 있을까? 프로세서는 아주 작은 양의 데이터를 registers에 보관할 수 있는데, 컴퓨터의 메모리는 수십GB부터 수TB까지, 더 큰 컴퓨터는 그 이상의 방대한 양의 정보가 저장되어있고 처리를 기다리고 있다. 위에서 말했든, Arithmetic Operations(사칙연산)들은 MIPS instructions에서는 오직 프로세서의 registers에서만 처리될 수 있고, 그렇기때문에 MIPS는 registers와 memory간..
-
Register and MIPSComputer Science/Computer Architecture and Organization 2021. 4. 4. 16:24
Register C, Java와 같은 high-level languages과 MIPS와 같은 instruction set의 차이는 무엇일까? 하드웨어에는 제한된 저장 공간이 있는데 그것을 register이라고 부른다. MIPS architecture에서 register의 사이즈는 32bit이었는데, 여러번의 버전 업그레이드 후 현재는 64bit사이즈의 register를 많이 사용하고, 그것보다 큰 사이즈의 레지스터도 존재한다. 보통 한 컴퓨터에는 32개 또는 그것보다 조금 많은 레지스터가 있다. 그런데 왜 32개뿐일까? 더많은 레지스터를 사용하면 더 빠른것 아닌가? 어짜피 칩의 크기는 크지 않으니 조금 크게 하면 되지 않을까? 바로 컴퓨터 아키텍쳐에서 가장 중요한 이 법칙 때문이다. "Smaller is..
-
머신러닝이란 무엇인가?Machine Learning/Stanford ML Specialization 2021. 4. 4. 00:23
Coursera Machine Learning Specialization > Supervised Machine Learning: Regression and Classification > Introduction to Machine Learning 머신러닝이란 무엇인가? 머신러닝이라는 용어를 만든 아서 사무엘의 1959년도 정의와 톰미첼의 1998년 정의가 있는데, 최근 톰미첼의 정의를 많이 쓰는 추세이다. 아서 사무엘은 머신 러닝을 다음과같이 정의했다. "the field of study that gives computers the ability to learn without being explicitly programmed." "컴퓨터가 명시적으로 프로그래밍 되지 않아도, 스스로 학습할 수 있도록 하는 ..
-
컴퓨터의 언어, MIPSComputer Science/Computer Architecture and Organization 2021. 4. 3. 22:47
미국사람과 대화를 하려면 영어를 해야하고, 프랑스사람과 대화를 하려면 프랑스어를 해야하듯, 컴퓨터와 대화를 하려면 컴퓨터의 하드웨어가 알아들을 수 있는 컴퓨터의 언어를 해야한다. 이를 instructions라고 하고 이 언어의 문법을 instruction set이라고 한다. 그중 MIPS 명령어 체계는 아주 간단하고 깔끔하다! 아래 차트를 보면 MIPS 명령어 체계가 잘 정리되어있다. 이 차트를 이용해서 아래 수식을 풀어본다면 어떻게 표현할 수 있을까? a = b + c; d = a - e; 더하는 명령은 add, 빼는 명령은 sub을 사용해서 아래와 같이 표현할 수 있다. add a, b, c sub d, a, e 그렇다면, 조금 복잡한 아래와같은 수식은 어떨까? f = (g + h) - (i + j)..
-
Power의 벽, GHz가 높은 CPU가 좋은 CPU인가?Computer Science/Computer Architecture and Organization 2021. 3. 27. 11:01
수많은 세월동안, Intel을 필두로 수많은 CPU가 생산되어왔고 발전되어왔다. 앞선 포스트에 따르면, 많은 Clock을 처리할 수 있으면 제일 좋은 CPU일것만 같다. 하지만! 아래 그래프를 보면 25년간 Clock Rate는 많이 증가했지만, 처음 성장에 비하면, 최근에는 거의 변하지 않는 추세이다. 왜일까? 바로 파워이다. 초당 3.6GHz의 성능을 내려면 열이 발생하고, 그 열을 지속적으로 식히는것에는 한계가 있다. 그렇기때문에 요즘 CPU 생산 업체들은, Clock Rate를 높이는것보다 더 좋은 효율을 찾는데 집중을 하는것으로 보여진다. 위 자료는 2012년도에 출간된 책이기 때문에 2012년 당시 최근 차료를 보여준다. 그런데, 2021년 현재도, Clock Rate는 그렇게 높아지지 않았다..
-
PerformanceComputer Science/Computer Architecture and Organization 2021. 3. 25. 21:35
CPU Performance 시간은 컴퓨터 성능 측정에 있어서 중요한 수단이다. 시간을 나타내는 방법은 다양한데, wall clock time, response time 또는 elapsed time와 같은 표현은 디스크 엑세스, 메모리 엑세스, input/output, 운영체제 overhead등을 포함해서, 테스크가 시작부터 끝까지 걸린 총 시간을 나타낸다. CPU time (CPU execution time)은 CPU가 한 작업을 위해 쓰여진 시간으로, I/O이나 다른 프로그램을 돌린 시간은 측정되지 않는다. 조금더 들어가보면, user CPU time (프로그램에 쓰여진 시간)과 system CPU time (운영체제에 쓰여진 시간)으로 나눠질 수 있다. 언제 하드웨어가 가동되는지 알려주는 time ..
-
Processors and MemoryComputer Science/Computer Architecture and Organization 2021. 3. 21. 09:56
프로세서와 메모리는 엄청난 속도로 발전해왔다. 1951년과 비교했을 때, 지금 컴퓨터에 사용되고 있는 circuit과 비교했을 때, 수천억 이상의 성능을 낸다 (아직 발표되지 않은 기술이 많기 때문에 그 이상의 성능을 내는 칩도 분명히 존재할 것이다). Transistor 트랜지스터는 간단하게 전자적으로 on and off를 하는 장치이다. 키고, 끄는 조금은 단순한 장치이다. Integated Circuit (IC)는 수백 수천개의 트랜지스터를 한 칩에 넣은 것을 말한다. 그러니까 키고 (1) 끄는 (0) 장치가 수천 개 모여있으니, 만약 1000개가 있다면, 1개였을 때 1, 0 두 숫자를 표현할 수 있다. 반면에 이 천 개의 트랜지스터를 사용해서 숫자를 표현해본다면 0부터 21000 - 1의 숫자까..