Announcement

Collapse
No announcement yet.

มีข้อสงสัยเกี่ยวกับการทำงานของ CPU ครับ

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • มีข้อสงสัยเกี่ยวกับการทำงานของ CPU ครับ

    สมมุติคอมผมใช้ CPU ที่มี 8 core / 8 thread
    แต่โปรแกรมที่ผมใช้งานมันเป็นโปรแกรมเก่า ซึ่งใช้งาน CPU ได้แค่ 2 thread
    แบบนี้ก็แสดงว่าอีก 6 thread ก็จะว่างงานใช่หรือเปล่าครับ

    คำถาม

    1.) แล้วถ้าเกิดสมมุติอีกว่า ผมใช้งานโปรแกรมนั้นจน CPU มันทำงาน 100% แล้ว แต่ยังมีข้อมูลรอประมวลผลอยู่อีก คอมพิวเตอร์มันจะแบ่งการทำงานในส่วนที่เกิน 100% นั้นไปให้ Thread อื่นๆประมวลผลหรือเปล่าครับ หรือว่าถึงอย่างไรก็จะให้ thread 1 และ 2 ประมวลผลอย่างเดียวเลย

    2.) และอีกกรณีหนึ่ง สมมุติผมใช้โปรแกรม A ซึ่งใช้ CPU 2 thread พร้อมกับโปรแกรม B ซึ่งใช้ CPU 2 Thread เหมือนกัน แบบนี้ระบบจะแบ่งให้ CPU ประมวลผลอย่างไรครับ จะแยกเอา Thread 1-2 ให้โปรแกรม A และ Thread 2-4 ให้โปรแกรม B ของใครของมันไปเลย หรือว่าโปรแกรม A และ B ต้องแบ่งกันใช้ Thread 1-2 ร่วมกันเท่านั้นครับ

  • #2
    ใช่ละ

    Comment


    • #3
      ไม่ใช้การทำงานของ CPU ครับมันเป็นการทำงานของ OS ครับ

      1.อ่านแล้วงง
      2.A และ B แบ่งกันใช้ทั้ง 8 thread

      Comment


      • #4
        Originally posted by Zashiki View Post
        ไม่ใช้การทำงานของ CPU ครับมันเป็นการทำงานของ OS ครับ

        1.อ่านแล้วงง
        2.A และ B แบ่งกันใช้ทั้ง 8 thread
        ขออภัยครับ ผมไม่เก่งคอม เลยอาจอธิบายงงๆ

        ข้อหนึ่งนี่คือประมาณว่าปกติแล้วโปรแกรมที่ใช้งานแค่ 2 thread มันก็จะใช้แค่ Thread 1-2 เท่านั้น ไม่สามารถแบ่งงานไปให้ CPU ได้ครบทั้ง 8 Thread แต่ถ้าหาก CPU thread 1-2 มันทำงานเต็ม 100% อยู่แล้ว แบบนี้ OS มันจะยังรอโยนข้อมูลให้ Thread 1-2 ซึ่งทำงานเต็ม 100% อยู่แล้วประมวลผลอีกหรือเปล่าครับ หรือมันจะโยนข้อมูลไปให้ Thread อื่นๆที่ว่างงานอยู่ประมวลผลแทน

        Comment


        • #5
          โปรแกรมรองรับแค่2Thread ต่อให้CPUรัน100%ไม่ทันมันก็ต้องค่อยๆทำไป ไม่สามารถแบ่งส่วนที่เหลือไปให้Threadที่ว่าง(เกินกว่าที่โปรแกรมรองรับ)ช่วยทำงานได้ เพราะโปรแกรมมันรู้จักแค่2Thread ดังนั้นต่อให้CPU100Threadมันก็ทำแค่2Thread ไม่งั้นต้องใช้พวกโปรแกรมที่รองรับMultithreadเท่านั้น

          Comment


          • #6
            ุ้ขึ้นอยู่กับว่าโปรแกรมออกแบบมายังไงโดยปกติแล้วจะไม่แบ่งออกไปเพราะว่ามันรอผลข้อมูลที่กำลังประมวลผลอยู่นั้นละครับ

            Comment


            • #7
              Originally posted by tontan View Post
              โปรแกรมรองรับแค่2Thread ต่อให้CPUรัน100%ไม่ทันมันก็ต้องค่อยๆทำไป ไม่สามารถแบ่งส่วนที่เหลือไปให้Threadที่ว่าง(เกินกว่าที่โปรแกรมรองรับ)ช่วยทำงานได้ เพราะโปรแกรมมันรู้จักแค่2Thread ดังนั้นต่อให้CPU100Threadมันก็ทำแค่2Thread ไม่งั้นต้องใช้พวกโปรแกรมที่รองรับMultithreadเท่านั้น
              งั้นก็แสดงว่าถ้าใช้งานโปรแกรมต่างกันสองโปรแกรมพร้อมกัน ซึ่งทั้งสองโปรแกรมรองรับแค่ 2 Thread เหมือนกัน แบบนี้ทั้งสองโปรแกรมก็จะต้องแบ่ง Thread 1-2 ใช้ร่วมกันเท่านั้น เพราะมันไม่รู้จัก Thread 3-8 ผมเข้าใจถูกต้องหรือเปล่าครับ ?

              Comment


              • #8
                Originally posted by earman View Post
                งั้นก็แสดงว่าถ้าใช้งานโปรแกรมต่างกันสองโปรแกรมพร้อมกัน ซึ่งทั้งสองโปรแกรมรองรับแค่ 2 Thread เหมือนกัน แบบนี้ทั้งสองโปรแกรมก็จะต้องแบ่ง Thread 1-2 ใช้ร่วมกันเท่านั้น เพราะมันไม่รู้จัก Thread 3-8 ผมเข้าใจถูกต้องหรือเปล่าครับ ?
                ไม่ใช่ เพราะโปรแกรมแรกใช้ไป2Thread โปรแกรมที่2ก็ใช้Threadที่เหลืออีก2Thread (โปรแกรมที่1ใช้Thread 1กับ2 โปรแกรมที่2ใช้Thread 3กับ4)

                Comment


                • #9
                  พอเข้าใจแล้วครับ ขอบคุณทุกท่านมากๆครับ

                  Comment

                  Working...
                  X