본문 바로가기

전체 글

(291)
[컴퓨터구조] 암달의 법칙과 리틀의 법칙 현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다. 컴퓨터 구조에서 암달의 법칙 및 리틀의 법칙은 멀티코어 및 병렬 시스템에 대해 설명하는데 도움을 줄 수 있다. 암달의 법칙(Amdahl's law) 암달의 법칙은 병렬 컴퓨팅 상황에서 병렬 작업에 의한 성능 향상 정도를 나타내는 공식으로, 아무리 병렬성을 높인다고 해도 ( 코어 수를 늘린다고 해도 ) 최대 성능은 전체 작업 중 병렬 작업이 차지하는 비율에 종속된다는 의미를 가진다. 위 공식에서 p 는 병렬적으로 처리할 수 있는 작업의 비율을 의미한다. 코어 s의 수가 충분히 많으면 p / s 는 0에 수렴하기 때문에, 전체 성능은 serial하게 처리되는 작업의 비율인 (1-P) 에 따라 달라진다. 이때 성능을 최대한 양보해..
[컴퓨터구조] 멀티코어 현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 하며, 이전 글과 어느 정도 내용이 이어진다. 프로세서의 성능을 높이는 가장 직관적인 방법은 단위면적 당 트랜지스터 수, 즉 집적도를 높이는 것이다. 과거에는 실제로 반도체 feature size을 줄여 트랜지스터의 집적도를 높임으로써 무어의 법칙(대략 1년에 2배씩 성능 증가)을 만족하는 성능 향상을 보일 수 있었다. 그러나 feature size는 원자의 크기인 1nm 이하로 감소할 수는 없으며, 반도체의 집적도가 높아질 수록 누설 전류(leakage current) 증가하여 결과적으로 전체 전력 소모량의 급증 및 발열 심화 현상이 발생하여 단순히 집적도를 줄이는 방식에는 한계가 존재했다. 따라서 업계는 하나의 코어의 성능을 극..
[암호학] 서론 대학 강의를 기반으로 작성했으며, 해당 대학 강의에서는 Cryptography & Network Security 서적을 이용했습니다. 보안 목표 기밀성(Confidentiality) : 정보는 인가된 사람들에게만 공개되어야 한다. ex ) 고객 정보 암호화를 통해 탈취당하더라도 정보를 알 수 없게 관리 무결성(Integrity) : 정보의 변경은 인가된 자에 의해, 인가된 매커니즘 하에서만 발생해야 한다. 무결성의 왜곡은 반드시 악의적 행동에 의한 것이라고 할 수는 없다. ( 통신 에러 등 ... ) ex ) 클라이언트가 보낸 값이 유효한 값인지 서버 측에서 검사 가용성(Availability) : 정보는 인가된 자가 사용할 수 있어야 한다. 기밀성이 너무 강해 인가된 사람마저 사용할 수 없으면 안된다...
[컴퓨터구조] 프로세서의 발전과 제약 현재 글은 Computer Organization and Architecture 및 대학 강의 내용에 의해 작성되었다. 시대를 거듭할 수록 컴퓨터 시스템의 가격은 감소하고, 성능은 증가하는 추세이다. 최근 많이 사용되는 클라우드 컴퓨팅 방식만 생각해 보더라도 과거 컴퓨터의 성능과 가격으로는 현재의 합리적 수준에 도달할 수 없었을 것이다. 이때, 컴퓨터의 성능을 향상시키는데 있어서 트랜지스터의 집적도도 중요하지만, 디자인 역시 중요한 요소 중 하나이다. 그렇다면 과거의 기술자들이 어떤 방식으로 컴퓨터의 성능을 향상시켰는지 보자. Microprocessor Speed 트랜지스터 집적도를 높이기 위한 칩 개발자들의 노력과는 별개로, 마이크로 프로세서 디자이너들은 해당 프로세서의 성능을 높이기 위한 디자인을 수..
[컴퓨터구조] 컴퓨터의 발전 과정 1세대 컴퓨터 : 진공관 1946 ~ 1957 진공관은 정류나 증폭 등의 특성을 가지고 있는 부품으로, 1세대 컴퓨터는 진공관을 이용하여 디지털 논리나 메모리를 구현했다. 유리관으로 이루어진 부품 특성상 고장 나기 쉽다는 단점이 있었다. IAS computer : 폰 노이만에 의해 고안된 초기 전자 컴퓨터로, stored program concept :명령을 천공카드 대신 메모리에 저장했다가 사용 하는 방식을 이용했다. 2세대 컴퓨터 : 트랜지스터 1957 ~ 1964 진공관은 다음과 같은 단점들이 존재한다. 부품의 크기가 커서 회로가 커질 수록 컴퓨터의 크기도 기하급수적으로 커져야 한다. 금속 가열 기반이라 발열이 심하다. 구조가 전구와 유사하여 수명이 짧다. 트랜지스터는 진공관을 대체하는 실리콘 기반..
[컴퓨터구조] 기본 개념 현재 게시물은 대학 강의 및 Computer Organization and Architecture 을 참고하여 작성되었습니다. Architecture vs Organization Computer Architecture 프로그래머에게 보이는 시스템 속성으로, 프로그램의 논리적 동작에 대한 직접적인 영향력을 지닌다. ex) instruction set, data type, I/O, word size 등 Computer Organization 아키텍처 명세를 구현하는 운영 단위 및 상호 연관성 ex ) 하드웨어 명세, 주변기기와 컴퓨터 사이의 인터페이스, 메모리 기술 등 ... 아키텍처와 구조의 예시 https://en.wikipedia.org/wiki/IBM_System/370 IBM System/370 -..
[Kotlin] 생성자 코틀린의 클래스는 3가지 구성 요소가 있다. class name : 클래스 이름 class header : type parameter, primary constructor class body : 클래스의 프로퍼티나 함수 등을 정의하는 몸체 3가지 구성요소 중 클래스 이름만 있어도 선언이 가능하다. 이때 몸체의 경우 { } 로 감싸진 부분을 의미하므로 클래스의 몸체가 없으면 괄호도 필요 없다는 것이 특징적이다. 대략 이런게 가능하다. class Something // 몸체 없이 클래스 생성 가능 Constructor 생성자는 2가지가 존재한다. Primary Constructor : 클래스 헤더에 위치하는 생성자. init 함수를 통해 값을 초기화한다. Secondary Constructor : 클래스 바..
[Kotlin] control flow Condition expressions 대중적으로 많이 사용하는 언어들은 조건을 검사할때 조건문 ( Conditional Statement ) 을 사용한다. 그러나 코틀린은 러스트처럼 조건문 대신 조건식 ( Conditional Expression ) 을 이용한다. 이때 문장 ( Statement ) 과 표현식 ( Expression ) 은 다음과 같다. Statement : 특정 명령을 실행하거나 지시하는 코드 조각 단위 Expression : 값으로 평가될 수 있는 코드 조각 단위 조건의 검사에 표현식을 사용하는 경우, 조건의 결과를 값으로써 사용할 수 있다는 장점이 있다. 또한 표현식은 문장에 포함되므로 꼭 값으로 평가되지 않아도 상관 없다. 즉, 조건의 분기에 더해 값으로써의 역할을 추가적으로 수..