overclockzonefanpage  overclockzoneth  TV  
Page 1 of 2 12 LastLast
Results 1 to 20 of 29

Thread: สองอย่างนี้ต่างกันไหม ( Thread )

  1. #1
    OverclockZone Member
    Join Date
    7 Feb 2007

    Default สองอย่างนี้ต่างกันไหม ( Thread )

    Process ที่เป็น Multi Thread บน CPU core เดียว ที่ไม่มี Hyper Thread
    กับ Process Thread เดียว บน CPU core เดียว ที่ไม่มี Hyper Thread อันไหนเร็วกว่ากัน
    เพราะตามหลักแล้ว CPU core เดียว ที่ไม่มี Hyper Thread ก็ทำได้ทีละคำสั่งอยู่ดี แถมต้องมาทำ Context SW ละหว่าง Process อีก มันน่าจะช้ากว่า และถ้ามันช้ากว่าจริงเราจะเขียน Multi Thread อีกทำไม ผมงงมากๆ เลย
    ใครก็ได้ช่วยแนะนำหน่อยนะคราบ

  2. #2
    OverclockZone Member ohm27's Avatar
    Join Date
    18 Sep 2006
    Location
    บึงกุ่ม ถนนเสรีไทย

    Default

    งงครับ -*-

    Multi Thread(multiมานหมายถึงตั่งแต่3ขึ้นไปนะ) บนCPU coreเดียว คืออะไรครับ ขอคำแปลหน่อย ปกติCPU coreเดียวมานก็มีแค่ 1threadหนิครับ

  3. #3
    หน่วยจู่โจม guru's Avatar
    Join Date
    14 Sep 2006

    Default

    1.Multi Thread บน CPU core เดียว ที่ไม่มี Hyper Thread
    --------------------------------------
    2.Process Thread เดียว บน CPU core เดียว ที่ไม่มี Hyper Thread
    --------------------------------------
    ซีพียูทั้ง 2 หัวข้อที่เอามาเปรียบเทียบเป็นตัวเดียวกัน เป็นซีพียูคอร์เดียว ไม่มี hyper thead
    --------------------------------------
    ซึ่งซีพียูแบบเดียวกัน ประมวลผลได้เหมือนกัน คำตอบก็มีอยู่แล้วคือ เท่ากันครับ(คำถามค่อนข้างจะ งง นะครับ)
    Last edited by guru; 13 Jul 2007 at 17:21:37.

  4. #4
    OverclockZone Member
    Join Date
    4 Feb 2007

    Default

    Process แบบ multi thread บน CPU แบบ multi core เร็วสุด


    อิอิ นอกนั้น มั่ว

  5. #5
    OverclockZone Member
    Join Date
    28 May 2007

    Default

    Quote Originally Posted by nutdiablo View Post
    เพราะตามหลักแล้ว CPU core เดียว ที่ไม่มี Hyper Thread ก็ทำได้ทีละคำสั่งอยู่ดี แถมต้องมาทำ Context SW ละหว่าง Process อีก มันน่าจะช้ากว่า และถ้ามันช้ากว่าจริงเราจะเขียน Multi Thread อีกทำไม ผมงงมากๆ เลย
    ใครก็ได้ช่วยแนะนำหน่อยนะคราบ
    ข้อดีอีกข้อของ multithread programming คือ parallel execution ครับ ก็คือความสามารถที่แต่ละ thread จะทำงานไปได้พร้อมๆกัน

    ผมเข้าใจว่าบางโปรแกรมถึงแม้จะเป็นโปรแกรมเดี่ยว แต่มันต้องเขียนโปรแกรมเป็น multithread ก็เพราะว่าต้องการข้อดีข้อนี้ ก็คือต้องการให้แต่ละ module ในโปรแกรมทำงานไปได้พร้อมๆกัน

    ยกตัวอย่างโปรแกรมอย่างเช่น game ซึ่งจะต้องมีหลายๆ module ทำงานไปพร้อมกัน
    เช่น module AI ที่ควบคุมการเคลื่อนไหวของศัตรู ก็ต้องทำงานไปพร้อมๆกับ module ที่ควบคุมการแสดงผลของผู้เล่นหลักครับ

  6. #6
    OverclockZone Member
    Join Date
    7 Feb 2007

    Default แต่ CPU core เดียว ก็ทำได้ที่ละ Modul ไม่ใช่หรอคราบ

    แต่ CPU core เดียว ก็ทำได้ที่ละ Modul ไม่ใช่หรอคราบ
    งั้นก็น่าจะใช้เวลาเท่าๆกัน

    และถ้ามันเท่ากันจะทำ Multi thread ทำไมกัน(หมายถึงจะทำ Multi thread CPU core เดียว ที่ไม่มี Hyper Thread ไปทำไม)

  7. #7
    OverclockZone Member
    Join Date
    28 May 2007

    Default

    CPU core เดียวธรรมดาๆ ก็ทำ multithread ได้ครับ
    multitasking ยังทำได้เลย ทำไม multithread จะทำไม่ได้

    มันใช้หลักการ time-dividing (แบ่งเวลาของ CPU) ทำให้เสมือนว่าทำงานไปพร้อมๆกัน

    แต่ผมเข้าใจคำถามของคุณ nutdiablo ละ คือคุณ nutdiablo อยากทราบว่าในสภาวะแวดล้อมแบบ single core cpu ธรรมดาๆ เนี่ย
    multithread programming มันจะมีข้อดีอะไรมากกว่า singlethread programming ในแง่ของความเร็วอย่างเดียว (อย่างอื่นไม่สนใจ)

    ผมไปหาข้อมูลมาละ มันมีตัวแปรนึงที่น่าสนใจ คือเจ้าสิ่งที่เรียกว่า memory letency ในการ run program
    ก็คือมันช่วงระยะเวลา (cycle) ที่เสียไปใน Program ที่จะต้องรอ การทำงานของ memory อาจจะเนื่องมากจากพวก cache miss

    ซึ่งโปรแกรมที่เป็น single thread นั้นก็จะหมายความว่า thread ที่ 2 จะเริ่มทำงานไม่ได้จนกว่า thread แรกจะทำงานเสร็จ
    ซึ่งระยะเวลาในการทำงานชอง thread แรก นั้น ก็รวมพวกเวลาของ memory letency เข้าไปด้วย

    แต่ถ้าเป็น multi thread ขณะที่ thread แรกเข้าสู่ช่วง memory latency นั้น
    CPU ไม่จำเป็นจะต้องเสีย cycle รอไปเฉยๆ เพราะว่า CPU สามารถเริ่มทำงาน thread ที่สองได้เลย
    นั่นจะเป็นตัวแปรสำคัญที่ทำให้ multi thread จะทำงานเร็วกว่า single thread บน single core cpu

    ตัวอย่าง ถ้าเรามี thread ที่ทำงานง่ายๆ โดยใช้ 6 CPU cycle
    โดยจะใช้งานจริงๆอยู่แค่ 2 cycle คือหัวกับท้าย แต่จะมี memory latency อยู่ 4 cycle ตรงกลาง

    ถ้าเราต้อง run thread นี้ทั้งหมด 4 ตัว จะเกิดอะไรขึ้น

    ในสภาวะแวดล้อมแบบ Single thread ก็คิดง่ายมาก ก็คือเราก็จะใช้เวลาทั้งหมด = 6x4 = 24 Cycle

    แต่ถ้าเป็น multithread พอถึง cycle ที่สองของ thread แรก ที่จะเป็นช่วง memory latency
    CPU จะสามารถเริ่มทำงาน thread ที่สองได้เลย และพอถึง cycle ที่สามก็จะเริ่มทำงาน thread ทีสามได้อีก
    ทำให้ระยะเวลาทั้งหมดที่ใช้เท่ากับแค่ 9 cycle เท่านั้นเอง

    ดูได้จากตามรูปข้างล่างเลย



    ข้อมูลเพิ่มเติม อ่านจากนี่
    http://www.embedded-computing.com/pd...elis.Jan06.pdf

  8. #8
    OverclockZone Member kingmax's Avatar
    Join Date
    18 Sep 2006
    Location
    Bangkok

    Default

    มีแต่คนแน่นๆ ทั้งนั้นเลยครับ ขอดูดความรู้สะหน่อย อิอิ

  9. #9
    OverclockZone Member ยองยองซอย's Avatar
    Join Date
    22 Sep 2006
    Location
    ลำปาง/เชียงใหม่

    Default

    จดๆฟามรู้ อ่านไปเกาหัวไป อะไรเทรดๆ เสสๆ?

  10. #10
    OverclockZone Member ohm27's Avatar
    Join Date
    18 Sep 2006
    Location
    บึงกุ่ม ถนนเสรีไทย

    Default

    ลึกซึ้งเกินไป ไม่เข้าใจเลย 5*5*5

  11. #11
    OverclockZone Member
    Join Date
    8 Nov 2006
    Location
    Netherlands

    Default

    ขอดูดทุกอย่างแล้วกัน

  12. #12
    OverclockZone Member
    Join Date
    7 Feb 2007

    Default

    เป็นอย่างนี้นี่เองขอบคุณคราบ ทุกท่าน

  13. #13
    OverclockZone Member tasanakorn's Avatar
    Join Date
    15 Jun 2007

    Default

    ก็อย่างที่รู้ๆ... ปัจจุบัน... เราสามารถใช้งาน ​CPU หนึ่งตัว ได้มากกว่า 1 งาน (Task) อยู่แล้ว (ไม่ว่าจะกี่ Core ก็ Hyper Thread จะทำทีละคำสั่ง หรือหลายๆคำสั่ง) โดยการใชเทคนิค การสลับงาน..

    ซึ่งใช้งานได้ดีไม่ดีเต็มที่อย่างไร .. ส่วนหนึ่งก็ขึ้นกับเทคนิค ในการสลับงาน (ซึ่งปกติจะอยู่ที่ OS)

    ในตัว CPU จะมีหน่วยประมวลผลต่างๆ เช่น ALU หรือ FPU เพื่อที่จะสามารถ ประมวลผล คำนวน สิ่งต่างๆ พร้อมๆกัน ได้ .. (CPU x86 ปัจจุบัน .. ทำงานพร้อมๆกันหลายๆ คำสั่ง ใน 1 cycle ได้) แต่ มีเงื่อนไขอยู่ว่า .. มันต้องเป็น คำสั่ง ที่ไม่ต้องรอกัน หรือสัมพันกัน ... มันก็เลยกลายเป็นว่า พอใส่ ALU หรือ FPU ไปเยอะ .. ก็ไม่สามารถ ใช้งานได้หมด .. เพราะ หลายๆคำสั่ง.. ต้องทำงาน ต่อกัน .. เช่น.. เราจะเอา A + B *C เราก็ต้องเอา B*C ก่อน .. แล้วค่อยมาบวกกับ A ... ทำให้แบบนี้ ก็ใช้ ALU ทีละตัว ในส่วนนี้ กลไก ใน CPU เป็นตัวจัดการ CPU รับรู้ได้ทีละ process ทำให้ ALU,FPU ทีเหลือ เอาไปใช้ทำอย่างอื่นไม่ได้..

    Hyper Threading เป็นการทำ Logical CPU โดยทำงานกับ ALU,FPU เดียวกัน ทำให้ OS มองเห็น มากกว่า 1 CPU พอ OS เห็นมากกว่า 1 เช่นเห็นเป็น 2 .. OS ก็จะกำหนด Process ที่ทำงานพร้อมๆกันได้ เป็น 2 Process ส่งผลให้ .. ใช้ ALU, FPU ได้เต็มที่ขึ้น

    ผมจะจำว่า . Hyper Threading คือ Virtual CPU

    ส่วนเรื่อง.. Multi-Processing , Multi-Threading .. ผมถือว่าเป็นเทคนิค ด้าน Software
    Multi-Processing , Multi-Threading มันเป็นความพยายาม ที่เราต้องการ ทำงานหลายๆอย่าง พร้อมๆ กัน .. อย่างง่ายๆ ...

    เช่น. ในสมัย DOS ที่ยังไม่ใช่ Multi-Tasking OS เนี้ย.. การเขียนโปรแกรม ก็เป็น Single Process, Single Threading เช่นโปรแกรม นึง .. ต้องการ... รบข้อมูลเข้าทาง Keyboard, ทาง Mouse , แล้วไปแสดงผล บนหน้าจอ ... การเขียน.. ก็จะต้องทำงาน ทีละอย่าง... จนครบลูป... ซึ่งโปรแกรม ต้องคอย จัดสรร เอง ว่าจะใช้เวลาส่วนได้ มากน้อยแค่ไหน ภาพรวมการทำงานทั้งหมด ถึงจะดูเหมาะสม
    พอ .. OS ทำ Multi-Tasking ทำ Multi-Process โดยโปรแกรมเมอร์.. ก็แตกงาน ออกเป็นหลายๆ Process .. แล้วให้ OS เป็นคนจัดการ .. โปรแกรมเมอร์.. ก็ไม่จำเป็นต้องระวังมาก ว่า งาน ส่วนไหน .. จะเบียดเวลา ของอีกส่วนหรือเปล่า ...

    คราวนี้ การเขียนโปรแกรม Multi-Processing เนี้ย.. มันแย่ตรงที่ .. มันเป็น Process ที่แยกออกจากกัน .. มี memory space แยกกัน​.. ทำให้ใช้ Resource เยอะ ...
    รวมทั้ง.. ถ้า เครื่องหนี่งเครื่องมีโปรแกรมที่ทำงานพร้อมๆกันมากกว่าหนึ่งโปรแกรม... โปรแกรม ที่มี Process เยอะ ..ก็จะอาจจะไปใช้ CPU มากกว่า โปรแกรมที่มี Process น้อย.. เพราะ OS มองเห็นว่าเป็น Process เหมือนกัน .. ก็จัดการเวลาให้เท่าๆกัน

    เลยมีการใช้ Multi-Threading Programming มาช่วย.. โดยการเป็นการทำให้สามารถ ทำงานหลายๆ งาน .. แต่อยู่ใน Process เดียว... ซึ่งจะทำให้ .. ใช้ Memory ร่วมกัน.. สามารถ ใช้ Data บางอย่าง ร่วมกันได้​.. ก็จะกิน Memery น้อยลง.. และ พออยู่ใน Process เดียวกัน .. ถีงแม้จะมีจำนวน Thread ทีเยอะ ... OS ก็จะถือว่าเป็น โปรแกรม Process เดียว ก็จะจัดสรร CPU ให้เท่าๆกับโปรแกรมอื่น ที่มี Process เดียวเหมือนกัน..
    Last edited by tasanakorn; 15 Jul 2007 at 14:28:58.

  14. #14
    OverclockZone Member tasanakorn's Avatar
    Join Date
    15 Jun 2007

    Default

    มาสรุปสั้นเพิ่มต่อ ...
    key หลักๆ ที่จะผมพยาม โดดไปใช้ .. Multi-Threading ... อย่างแรกคือ Memory ... ถ้าต้องเขียนโปรแกรม แล้ว มันแตกออกมา เป็น พัน Process นี้... Memory ระดับ GB นี้จะหายไปใน พริบตา... ... แถม OS ยังทำ Process switch บน User Process จนไม่มีเวลาทำ System Process อีกตั้งหาก..

    อย่างที่สอง ... การเขียนโปรแกรม Multi-Threading มันทำให้เรา เขียนโปรแกรมงาย.. ในกรณี ที่ต้องทำหลายๆเรื่อง พร้อมกัน ..

    อย่างที่สาม ..เมื่อต้องการทำงานหลายๆ อย่างพร้อมๆกัน .. แล้ว การ ทำ Multi-Threading มันทำให้เรา ติดต่อกันระหว่าง Thread ได้ง่าย..


    จะเห็น ว่า มีแค่ข้อแรก.. ที่เกี่ยวกับ Performance ...
    และผม ก็ใช้ ข้อนี้ บ่อยซะด้วย... โดยเฉพาะ ในเรื่อง การ ปรับแต่ง Server

  15. #15
    OverclockZone Member
    Join Date
    28 May 2007

    Default

    ข้อมูลจากการใช้งานจริง เยี่ยมไปเลยครับ คุณ tasanakorn

  16. #16
    OverclockZone Member Hokly's Avatar
    Join Date
    5 Jul 2007

    Default

    โห กระทู้นี้หลักการเพียบครับ ต้องจดๆๆๆๆๆๆๆ

  17. #17
    OverclockZone Member monkyz's Avatar
    Join Date
    6 May 2007

    Default

    ...


    ปวก หัววว

    อั๊วะ ม่าย ว๋ายยย เลี้ยวววว

  18. #18
    OverclockZone Member putta's Avatar
    Join Date
    23 Oct 2006

    Default

    กดก

  19. #19
    OverclockZone Member PUSH THE TEMPO's Avatar
    Join Date
    8 Nov 2006
    Location
    ในความฝัน

    Default

    ขุดซะงั้น แต่ก็ดีเหมือนกัน เพราะยังไม่เห็น เอิกๆ

  20. #20
    OverclockZone Member cmo's Avatar
    Join Date
    12 Jun 2007
    Location
    Italy

    Default

    เข้ามาดร๊วบ บร๊วบ ความรู้ คึ คึ คึ

Page 1 of 2 12 LastLast

Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •