728x90
반응형
SMALL

알고리즘(Algorithm)

  • 주어진 문제를 해결하기 위해 정해진 절차나 규칙의 집합으로, 컴퓨터 과학이나 수학에서 사용되는 개념
  • 알고리즘은 입력값을 받아 원하는 결과를 출력값으로 생성하는 일련의 단계적인 절차이다.

알고리즘은 다음과 같은 특징을 갖고 있다:

  1. 명확성: 알고리즘은 각 단계가 명확하게 정의되어야 한다. 입력값, 출력값, 중간 과정 등이 명확하게 정의되어야 한다.
  2. 유한성: 알고리즘은 유한한 단계로 수행되어야 한다. 어떠한 경우에도 무한 반복되거나 끝나지 않는 알고리즘은 올바른 알고리즘이 아니다.
  3. 효율성: 알고리즘은 효율적이어야 한다. 입력값의 크기에 비례하여 적절한 시간 내에 실행될 수 있어야 한다.

알고리즘은 주로 다음과 같은 방식으로 설명된다:

  1. 의사 코드(Pseudocode): 의사 코드는 프로그래밍 언어의 문법을 따르지 않으면서 알고리즘의 핵심 아이디어와 절차를 자연어나 간단한 구문으로 설명하는 방식이다. 의사 코드는 컴퓨터가 직접 이해할 수는 없지만, 사람이 알고리즘을 이해하고 구현하는 데 도움을 준다.
  2. 흐름도(Flowchart): 흐름도는 그림으로 알고리즘의 단계와 흐름을 표현하는 방식이다. 다양한 기호와 화살표를 사용하여 시작점, 종료점, 조건문, 반복문 등을 나타낸다. 흐름도는 알고리즘의 구조와 흐름을 시각적으로 이해하기 쉽게 도와준다.

알고리즘은 컴퓨터 과학뿐만 아니라 다양한 분야에서 사용된다. 문제 해결, 데이터 정렬, 검색, 그래프 알고리즘, 최적화, 기계 학습, 인공 지능 등에 적용된다. 알고리즘의 효율성과 정확성은 소프트웨어 및 시스템의 성능에 직접적인 영향을 미치므로, 좋은 알고리즘을 선택하고 설계하는 것이 중요하다.

 


알고리즘을 요리 레시피 보다 세금 계산에 비유해야 하는 이유

  • 요리 레시피는 모호한 설명이 많다.
  • 세금 계산은 어떤 것을 어떻게 해야할지 명확하게 수행하는 절차를 정의할 수 있다.
  • ex) 양파를 볶으세요 : ‘적당히 잘라서 기름을 두르고 센불에 볶으세요’ 라고 할 수 있지만 ‘5mm X 5mm x 3mm 크기로 자르고 기름을 30ml 두르고 가열온도 800도 후라이팬 표면 온도 150도에서 후라이팬을 어찌저찌 움직이면서 볶으세요’ 라고 정의 내릴 수 없기 때문이다.(할 수 있지만 요리사가 이 모든 과정을 정확히 맞추기는 어렵다)
  • ex) 세금 계산 : 세법에 의해 다소 복잡해 질 수 있지만 ‘5000만원 소득에 대해 23% 세금이 나가며, 기부금 700만원으로 인해 소득공제가 발생하여 총 300만원 만 세금을 납부하면 됩니다’ 라고 명확하게 정의 내릴 수 있다.

 

지능과 상상력이 없는 개체가 수행할 수 있다는 것

  • 컴퓨터에게 갑자기 냉장고에 물을 가져오라고 시킬 수 있을까?
    • 냉장고가 뭐고 물이 뭔지 가르쳐야한다
    • 그럼 냉장고는 어디 있는데?
    • 냉장고 까지 어떻게 가야하는데?
    • 물이랑 식초랑 있으면 어떻게 구분할건데?
    • 물을 몇 N의 힘으로 집어올껀데?
    • 냉장고 문은 어떻게 여냐?
    • 냉장고 문은 닫고 돌아오냐?
    • 센스 있게 컵까지 갔다 줄꺼야?
    • 등등 따지고 보면 생각할 거리가 한 두 가지가 아니다.
  • 인간은 지능과 상상력으로 본인도 모르게 복잡한 과정을 아주 간단하게 처리하고 있다.
  • 컴퓨터한테는 위 모든 과정을 하나의 메서드(물 가져와)로 입력시켜놔야한다.
  • (AI 한테 감사하자)

파인만 알고리즘

  1. 문제를 적는다 > 골똘히 생각한다 > 답을 적는다.
  • 파인만(매우 천재)에게만 적용되기 때문에 파인만 알고리즘이다.
  • 일화 : 누군가[20] “200마일 길이의 철로의 양쪽 끝에 서 있는 두 대의 기차가 시속 50마일의 속도로 서로를 향해 출발했습니다.이때부터 두 기차가 서로 충돌할 때까지 파리가 시속 75마일의 속도로 두 기차 사이를 왔다 갔다 했습니다. 파리가 이동한 거리는 모두 몇 마일일까요?”라는 질문[21]을 폰 노이만에게 했다. 폰 노이만은 잠시 생각한뒤 150마일이라고 대답했다. 질문을 한 사람은 실망하면서 “역시 당신은 속임수에 걸리지 않는군요. 대개 사람들은 이 문제를 무한급수를 이용해서 풀려고 하지만 그렇게 하면 매우 많은 시간이 걸립니다. 하지만 간단한 논리를 이용해서 파리가 2시간 동안 움직인 거리를 알아내면 금방 풀리죠. 당신은 그렇게 풀어낸 거죠?”[22] 폰 노이만: “아뇨. 무한급수로 풀었는데요.”
  • 천재인지 살아있는 컴퓨터 인지, 누군가는 그의 머리속에 운동장만한 화이트 보드가 있다고 비유했다.
728x90
반응형
LIST
728x90
반응형
SMALL

컴퓨터

휴대폰 / 태블릿 / 사물인터넷 등의 기기와 컴퓨터

공통점

  • 논리적 구조, 무언가를 계산할 수 있는지에 대해 핵심 속성 보유
  • 비슷한 아키텍처를 가지고 있음

차이점

  • 가격, 소모 전력, 크기, 속도 등의 트레이드오프가 발생

 전반적인 아키텍처는 1940년대 후반 이래로 큰 변화는 없지만 물리적 구조는 빠른 진화를 거듭함


슈퍼 컴퓨터

  • 정의: 과학기술 연산을 비롯해 다양한 분야에 사용되는 고속 컴퓨터
  • 특징
    • 많은 프로세스와 대량의 메모리를 사용함
    • 요즘은 전용 하드웨어보단 속도가 빠른 평범한 프로세서로 구성된 클러스터를 기반으로 구현됨

https://aihtnyc-h.tistory.com/entry/%EC%8A%88%ED%8D%BC%EC%BB%B4%ED%93%A8%ED%84%B0Supercomputer

 

슈퍼컴퓨터(Supercomputer)

매우 높은 처리 성능을 갖춘 고성능 컴퓨터이다. 주로 과학, 공학, 대규모 데이터 분석, 날씨 예측, 핵심 연구 등의 분야에서 사용된다. 슈퍼컴퓨터는 대용량 데이터 처리, 병렬 컴퓨팅, 고성능

aihtnyc-h.tistory.com


슈퍼 컴퓨터의 속도 측정 단위

  • 플롭스(flops, floating point operations per second) : 초당 수행할 수 있는 부동 소수점 연산 횟수
    • 부동 소수점 연산: 소수 부분을 포함한 수에 대한 산술 연산

세계에서 가장 빠른 컴퓨터 top500 중 1~3위 (2023. 06 기준)

June 2023 | TOP500

 

June 2023 | TOP500

 or  Sign up Copyright 1993-2023 TOP500.org (c)

top500.org


GPU, Graphics Processing Unit

  • 정의: 범용 CPU보다 그래픽 관련 계산에 더 빠른 그래픽 전용 프로세서
  • 특징
    • 원래는 게임에 필요한 고속 그래픽 처리를 위해 개발되었음
    • 일반 프로세서가 특정한 종류의 작업을 빠르게 처리하는데 도움을 줌
    • 간단한 산술 연산을 병렬로 대량 처리할 수 있음
      → 일부 계산작업이 병렬 처리 가능한 연산을 포함하고 GPU에 작업을 넘겨줄 수 있으면 전체 계산이 훨씬 빨라짐
  • 사례
    • 큰 데이터셋의 여러 부분에 같은 계산을 독립적으로 수행할 일이 많아 머신러닝에 유용함
    • 휴대폰용 음성 또는 신호 처리에도 사용됨

분산 컴퓨팅, distributed computing

  • 정의: 네트워크로 연결되어 서로 독립적으로 작동하는 여러 대의 컴퓨터
  • 특징
    • 메모리를 공유하지 않고 물리적으로 흩어져 있음
    • 컴퓨터가 흩어질수록 통신이 잠재적 병목 현상을 일으킬 가능성이 높아지지만, 공간적으로 멀어도 상호 일을 할 수 있다는 장점이 있음
  • 예. 검색 엔진, 온라인 쇼핑, SNS, 클라우드 컴퓨팅 같은 대규모 웹 서비스

https://aihtnyc-h.tistory.com/entry/%EB%B6%84%EC%82%B0-%EC%BB%B4%ED%93%A8%ED%8C%85Distributed-Computing

 

분산 컴퓨팅(Distributed Computing)

분산 컴퓨팅(Distributed Computing) 여러 컴퓨터 또는 컴퓨터 네트워크에서 작업을 분산시켜 처리하는 컴퓨팅 모델이다. 기존의 중앙집중형 컴퓨팅과는 달리, 분산 컴퓨팅은 여러 개의 독립적인 시스

aihtnyc-h.tistory.com


컴퓨터 핵심 원칙

  • 다양한 작업을 수행하도록 프로그래밍 될 수 있는 범용 프로세스에 기반을 둠
  • 프로세스: 산술 연산, 데이터 값 비교, 기존 계산 결과에 다음으로 수행할 명령어를 선택하는 등의 한정된 레퍼토리가 있음

엘린 튜닝의 접근 방식

  • 컴퓨터가 매우 상식적인 수준에서 계산 가능한 것이면 어떤 것이든 계산할 수 있다.
  • 튜링 머신 : 계산을 수행하는 추상적인 모델
    https://www.youtube.com/watch?v=E3keLeMwfHY
  • 범용 튜링 머신: 다른 튜링머신을 모방하여 작동할 수 있는 튜링 머신을 만드는 방법으로 만든 것
  • 튜링 테스트
    • 컴퓨터가 인간 수준의 지적 능력을 보여줄 수 있는지 평가하는 테스트
    💡 더 나아가기 튜링 시험은 컴퓨터가 사람처럼 신체 동작하는 것은 지능과 관련이 없다는 전제하에, 사람이 사용하는 언어(자연어)를 이용한다. 최초의 튜링 시험에서는 사람인 조사관이 블라인드 상태에서 컴퓨터와 5분간 대화(채팅)하여 상대가 컴퓨터인지 사람인지 판단하고, 여러 조사관들 중 상대가 사람일 것이라고 판단하는 조사관이 30% 이상이면 컴퓨터는 지능이 있는 것으로 튜링 시험에 합격 판정을 받았다. 튜링 시험은 기본 과정에 영상과 작은 연결 통로로 물건을 주고받는 동작 시험을 포함시킨 전체 튜링 시험(total Turing test)도 있다.
    튜링 시험이 제안된 이래 컴퓨터가 실제로 지능을 가질 수 있는지에 대해서는 다양한 논란이 있다. 그러나 아직 튜링 시험을 완전히 통과한 컴퓨터는 개발되지 않았다.

https://aihtnyc-h.tistory.com/entry/%ED%8A%9C%EB%A7%81-%EB%A8%B8%EC%8B%A0Turing-Machine

 

튜링 머신(Turing Machine)

튜링 머신(Turing Machine) 알고리즘의 개념을 형식화한 컴퓨터 과학에서 중요한 개념 중 하나이다. 앨런 튜링(Alan Turing)에 의해 개발된 이론적인 모델로, 모든 컴퓨터가 실행 가능한 기본적인 형태

aihtnyc-h.tistory.com

  • 캡차(CAPTCHA)
    • ‘컴퓨터와 인간을 구별하기 위한 완전 자동화된 공개 튜링 테스트’ 의 약자
    • 역튜링 테스트의 사례로, 사람이 컴퓨터보다 시각적인 패턴을 더 잘 식별할 수 있다는 점을 이용함

728x90
반응형
LIST
728x90
반응형
SMALL

프로세서의 캐시

  • 데이터를 빠르게 접근할 수 있는 고속 기억장치
  • 캐시는 주로 CPU(중앙 처리 장치)와 주 메모리(메인 메모리) 사이에 위치하여 CPU의 작업 속도를 향상시키는 데 사용된다.

일반적으로 캐시는 속도와 용량에 따라 여러 단계로 구성되어 있다.

  • 가장 빠르고 작은 용량의 캐시인 L1 캐시부터 시작하여, L2 캐시, L3 캐시, L4 캐시 등으로 이어질 수 있다.
  • 이러한 캐시 레벨은 숫자가 작을수록 더 빠르지만, 용량은 작아진다.

캐시는 주로 로컬리티의 원리에 기반하여 작동한다.

로컬리티는 데이터에 접근할 때 일부 데이터가 다른 데이터와 자주 함께 사용된다는 원리를 의미한다.

이러한 원리를 기반으로 캐시는 최근에 액세스된 데이터를 저장하고, CPU가 동일한 데이터에 연속적으로 액세스할 때 빠르게 제공한다.

캐시는 메모리 액세스의 지역성을 활용하여 빈번하게 액세스되는 데이터를 미리 저장하여 CPU의 대기 시간을 줄이고 성능을 향상시킨다.

캐시는 일반적으로 세 가지 유형으로 분류된다.

  1. 명령어 캐시(Instruction Cache): 프로세서가 명령어를 실행할 때 필요한 명령어를 저장한다.
  2. 데이터 캐시(Data Cache): 프로세서가 작업을 수행하는 동안 필요한 데이터를 저장한다.
  3. 연관 캐시(Associative Cache): 명령어와 데이터를 모두 저장하는 캐시로, 명령어와 데이터를 동시에 처리할 수 있도록 돕는다.

캐시는 빠른 액세스 시간을 위해 CPU와 가까운 위치에 배치되며, 일반적으로 고속 SRAM(Synchronous Random-Access Memory)으로 구성된다.

SRAM은 속도가 빠르지만, 비용이 높고 용량이 작기 때문에 캐시의 크기는 제한적이다.

캐시는 프로세서의 성능 향상을 위해 중요한 역할을 담당하고 있으며, 적절한 캐시 구성과 관리는 프로세서의 성능을 크게 영향을 준다.


일반적으로 프로세서에는 캐시가 2~3개 존재

흔히 L1, L2, L3 레벨이라고 부르고 뒤로 갈수록 용량이 크지만 속도는 느림

L1, L2, L3 ⇒ 내부적 구조, 담당하는 것 +++

프로세서에 있는 여러 개의 누산기(accumulator, CPU에서 중간 산술 논리 장치 결과가 저장되는 레지스터)는 실행 속도를 높인다는 점에서 일종의 캐시

주 기억 장치는 디스크를 보완하는 캐시가 될 수 있고

메모리와 디스크는 네트워크에서 오는 데이터를 빠르게 꺼낼 수 있다는 점에서 둘 다 캐시가 된다.

⇒ 캐싱은 곧 다시 쓸 가능성이 있거나(시간적 지역성) 근처에 있는 뭔가를 사용할 가능성(공간적 지역성)이 있을 때 언제든지 활용할 수 있는 일반적인 개념

네트워크에서는 멀리 떨어져 있는 서버에서 오는 정보 흐름의 속도를 높이려고 캐시를 사용할 때가 많고 서버 자체에도 캐시가 있음

실제로 사용자가 가끔 캐시의 효과를 직접 볼 수 있다.

ex. 큰 프로그램을 실행한 후 디스크에서 로딩이 완료되고 사용할 준비를 마친 프로그램을 종료하고 재시작 했을 때 처음 실행할 때보다 빠른 것 ⇒ 메모리가 디스크에 대한 캐시로 사용되기 때문

캐시는 무한정 커질 수 없기 때문에 많이 쌓이면 오래된 데이터부터 삭제(사용자도 캐시를 삭제 가능)

워드나 엑셀 같은 프로그램에 있는 최근에 사용된 파일 목록도 일종의 캐싱


캐싱 https://aihtnyc-h.tistory.com/entry/%EC%BA%90%EC%8B%B1Caching

 

캐싱(Caching)

캐싱(Caching) 데이터나 결과를 임시로 저장하여 나중에 빠르게 액세스할 수 있도록 하는 메커니즘이다. 캐싱은 컴퓨터 시스템의 성능을 향상시키고, 데이터 액세스 속도를 개선하며, 시스템의 부

aihtnyc-h.tistory.com

 

참고

[OS] 캐시 메모리(Cache Memory)란? 캐시의 지역성(Locality)이란?

 

[OS] 캐시 메모리(Cache Memory)란? 캐시의 지역성(Locality)이란?

캐시 메모리(Cache Memory) 주기억장치에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 하는 메모리 그러므로 캐시는 주기억장치보다 크기가 작을 수밖에 없다! 캐시 기억장치

chelseashin.tistory.com

 

728x90
반응형
LIST

+ Recent posts