싱글코어와 듀얼코어에 대해서..

no1hacker의 이미지

질문이 있어서 글을 올려봅니다.

어떤 일을 처리하는 프로그램이 있습니다.

이 프로그램은 처음과 끝이 존재하는 프로그램입니다.
(즉 무한반복같은 작업이 아닌, 프로그램이 시작하면 끝이 있죠. 다소 시간이 걸리는 작업)

이때

이 프로그래밍을

싱글 코어에서

- 하나의 프로세스로 만들어서 실행시키는 것과
- 멀티 쓰레드를 만들어서 실행시키는 것과

차이가 있나요?
단, 이때 차이라 함은 시간적 차이를 말합니다.
(시간적외에 다른 차이가 있다면 그것도 말씀해주시면 감사하겠습니다.^^)

(듀얼코어에서는 분명히 차이가 있을 것 같은데요...)

kslee80의 이미지

듀얼코어 시스템에서 멀티쓰레드(혹은 멀티프로세스) 작업으로 바꾼다고 해서 항상 시간상의 이득이 있는것은 아닙니다.

만약에 그 작업이 크게 A, B, C, D 로 나누어지며,
꼭 A->B->C->D 의 순서로 이루어져야 하는 경우 (그러니까...A 작업의 결과물을 B 에서 사용해야 한다던지 하는 경우)
이런 경우에는 시간상의 이득이 거의 없습니다.

하지만, C 작업이 B 의 결과물과는 상관없이 작업이 가능하다면,
A->B 를 수행하면서 다른 CPU 코에어서는 C 작업을 할 수 있으므로 이 경우에는 이득이 있게 되죠.
(A->B->C->D 를 수행하는 시간이 아니라 A->B->D (혹은 C->D. A->B 의 시간보다 C 의 시간이 큰 경우겠죠) 의 시간 정도만 걸리게 되죠)

(비약이 좀 심한 예인 듯 싶네요 =.= )

결국 시간상의 이득을 얻기 위해서는
시간이 오래 걸리는 작업을 동시에 수행할 수 있는 작업군과 동시에 수행할 수 없이 순차적으로 수행할 수 있는 작업군으로 나누는 것에 따라서
시간상의 이득을 많이 얻을수도 있고 적게, 혹은 아예 얻을수 없을 수도 있습니다.

simpid의 이미지

아주 간단한 예로써.

인형눈 붙이기를 한명이 하는게 빠를까요? 둘이서 같이 붙이는게 빠를까요?

그럼 조금더 복잡하게 생각해서

인형눈을 만들고 만들어진 인형눈을 붙이는건 어떨까요?
한명은 인형눈 만들고 만들어진 눈을 다른 사람이 붙인다면 더 빠르겠죠?
첫번째 눈을 만드는 동안 두번째 사람은 놀아야 겠지만...
일단 첫번째 눈이 만들어지면 그걸 두번째 사람이 붙이는동안 첫번째 사람은 두번째 눈을 만들 수 있습니다.

듀얼코어 이상의 다중 코어를 사용할 경우 효율적인 작업은 SIMD 작업류라고 할 수 있습니다.
간단한(?) 작업을 수없이 반복하는 일의 경우 다중코어를 이용한 다중 쓰레드 기반으로 개발할 경우 매우 좋은 효율을 발휘할 수 있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.