Announcement

Collapse
No announcement yet.

ความจำCache CPUทำไรได้ ???????????

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

  • #16
    Originally posted by teptop View Post
    ถ้าจะอธิบายมันก็ยาวอ่ะครับ

    เอาแบบรวบรัดล่ะกัน



    เมื่อไรที่เราเปิดรันโปรแกรม จะถูกสั่งการโดยซีพียู และซีพียู จะเอาชุดคำสั่งนี้มาเก็บไว้ที่L2 หรือเคสนั่นเอง ฉะนั้นเวลาเราปิดโปรแรมนี้ออกไป แต่ข้อมูลส่วนหนึ่งก็ยังถูกจำหรือถูกเก็บไว้ที่เคส ดังนั้นเวลาเราเปิดโปรแกรมนี้ซ้ำๆ เดิม ๆ จะไวขึ้น
    ...แต่ในกรณีที่มีเคสน้อย เราจะสังเกตุได้ว่าทำไหมเราเล่นเครื่องไปนานๆ เปิดโปรแกรมเยอะๆ แล้วรู้สึกว่าเครื่องจะร่วนๆ เอ๋อๆ เพราะว่าเคสที่เก็บข้อมุลบางส่วนเริ่มจะเต็มนั่นเอง เราจึงนิยมรีเครื่องใหม่ เหมือนล้างเคสใหม่ จะได้ไวๆขึ้น

    ภาพแรกคือ ซีพียูแต่ล่ะคอร์มีเคส แยกกัน ของใครของมัน ฉะนั้นการทำงานจะไวขึ้น
    แต่ถ้าซีพียูที่ใช้เคสร่วมกัน(ลองนึกภาพL2 ติดกันไม่แบ่งกันน่ะครับ) ข้อเสียตัวนี้คือเวลาที่ซีพียูจะดึงข้อมูลจากเคส จะเสียเวลามากกว่าที่เป็นแบบเคสของใครของมัน
    (เปรียบเสมือนเราค้นหาของในห้องใหญ่ๆ กับหาของในห้องแคบๆ จะหาได้ง่ายกว่า)

    ส่วนฝั่งAMD เขาอิจฉาฝั่ง Intel ที่มีเคสเยอะ ก็เลยแซวๆว่า ที่เอเอ็มดีเคสน้อยเพราะ ซีพียูไม่ต้องเสียเวลาไปหาข้อมุลที่L2 ทำให้เสียเวลาเพิ่มมากขึ้น แซวกันเล่นๆขำๆ อิอิ

    ส่วนBus Ram หรือฺBusCPU ก็เหมือนช่องทางวิ่งของข้อมูล บัสเยอะ ก็เหมือนท่อใหญ่ส่งน้ำก็ได้เยอะขึ้น มากขึ้น

    Buffer ของ HDD ก็เป็นองค์ประกอบหนึ่งช่วยในการก๊อปปี้ไฟล์ใหญ่ๆให้เร็วขึ้น ทั้งนี้ต้องขึ้นอยู่กับรอบและPort ด้วย

    แม้แต่sound card ยังมีแรมเลยครับ เหอๆ

    เป็นความเห็นส่วนตัวล้วนๆ ถ้าให้ชัวร์ลองไปถามที่ห้องIntel น่าจะได้คำตอบที่ดีกว่านี้น่ะครับ
    รู้สึกว่าท่านจะเอาความรู้ของ CPU Cache, RAM Cache, Page มาปนๆกันเลยอะ
    CPU Cache คือ
    โหลดข้อมูลจาก RAM มาเข้า CPU เช่นต้องการข้อมูลตัวอักษร A แล้ว cache มีขนาด L1 = 2B, L2 = 4B
    สมมุติว่าใน RAM มีข้อมูลที่ต้องการครบ และข้อมูลเรียงตามตัวอักษรติดกันเลย ( A, B, C, ...) แต่ใน cache (CPU) ไม่มีเลย ก็จะดึงจาก RAM มา
    ต้องการ A ก็ไปดึง A มาแต่พอดีว่า cache L2 เก็บได้ 4B ก็ไปดึงมาได้ 4 ตัว (ตัวอักษรขนาด 1B) ใน L2 ก็จะมีข้อมูล A, B, C, D
    จากนั้น L1 ก็จะดึงข้อมูล A จาก L2 มา ก็จะได้ A, B มาอยู่ใน L1 เพราะมีขนาด 2B
    จากนั้น CPU ก็จะนำข้อมูลจาก L1 ไปใช้ประมวลผล
    แล้วถ้าเกิด CPU ต้องการประมวลผลตัวต่อไปคือ B ก็จะลงไปดูที่ L1 ว่ามีมั้ย พอดีว่ามี A, B อยู่ใน L1 ก็เลยดึงข้อมูลมาได้ทันที
    ต่อไป CPU ต้องการ H แต่ใน L1 ไม่มี L2 ไม่มี เลยต้องลงไปที่ RAM เพื่อดึงข้อมูลมาใช้ ก็จะทำแบบเดิมคือ เอา H
    L2 ก็จะมี H, I, J ,K มาเก็บไว้ L1 ก็จะได้ H, I มาเก็บไว้
    ถ้า CPU ต้องการ A อีกรอบ แต่ L1 L2 ไม่มีแล้วเพราะถูกทับไปแล้ว ก็ต้องลงไปหาใน RAM ใหม่อีกครั้ง

    ทั้งนี้ CPU cache มีความเร็วเท่ากับ CPU เลยดังนั้นเร็วมาก แต่ลงไปที่ RAM ก็จะช้ากว่า แล้วถ้า RAM ไม่มีก็ต้องลงไปถึง HDD ก็ยิ่งช้าไปอีก

    ในความเป็นจริงในการใช้งาน ก็ใช่ว่าข้อมูลถัดไปมันจะอยู่ติดกับตัวก่อนหน้า แถมพื้นที่ cache น้อยมาก แล้ว L3 มัน share core ดังนั้นถ้าทุก core ประมวลผลพร้อมกัน ส่วนมากมันคนละงานกันอยู่แล้ว ข้อมูลมันก็ไม่ตรงกันอยู่ละ L3 ก็จะโดนทับๆไปเรื่อยๆ โอกาสที่จะมีข้อมูลที่ต้องการอยู่ใน L3 จึงน้อย แล้ว L2 L1 ก็ขนาดแค่นิดเดียวโอกาสที่จะเจอข้อมูลที่ต้องการก็น้อยตามไปอีก
    แต่ก็ไม่รุ้นะว่าจริงๆแล้วโอกาสในการประมวลผลแบบไหนมันถึงจะมีข้อมูลติดๆกันมาใช้งาน แล้วข้อมูลเวลามาลง cache มันเรียงแบบตัวอักษรจริงหรือไม่ หรือว่าจับไล่ตามลำดับ Page ก็ไม่รู้ ถ้าเป็น Page นี่มันไม่มีการเอามาเผื่ออยู่แล้วเพราะว่าเป็นการเปลืองพิ้นที่ RAM

    ส่วน RAM Cache คือใน RAM จะกั๊กที่เอาไว้ส่วนนึง เวลาเปิดโปรแกรมใดๆขึ้นมา มันก็จะจำ Process Image เอาไว้ใน cache เวลาที่ปิดโปรแกรมแล้วเปิดมาใหม่มันก็จะเรียกจากตรงนี้มาเลย ไม่ต้องไปโหลดจาก HDD อีกรอบ จะเห็นว่าเวลาเปิดโปรแกรมครั้งแรกจะนาน แต่ถ้าปิดแล้วเปิดใหม่จะเร็วกว่าเยอะ แต่มันก็จะมีเวลาของมันว่าจะเอาออกจาก cache เมื่อไร หรือถ้า cache เต็มก็จะถูกเอาของที่ไม่ได้ใช้นานออกไปเพื่อเอาของใหม่มาแทนที่ ไม่จำเป็นต้อง restart เครื่องเพื่อ clear memory แต่อย่างใด
    ที่ช้าๆรวนๆส่วนใหญ่เกิดจาก Fragmentation กับ Swap มากกว่า

    Buffer คือที่พักของข้อมูล I/O ทุกตัวส่วนมากจะมีหมด เพราะพวกนี้จะทำงานช้ามาก จะให้ CPU มารอจ่ายคำสั่งไปให้มันก็จะไม่ได้ทำงานอื่นกันเลย จึงมี Buffer ไว้เป็นถาดสั่งงานพวก I/O ทั้งหลาย เช่น
    เวลาจะเปิดไฟล์ แต่ว่า HDD กำลังเขียนข้อมูลอื่นลง disk อยู่จึงทำงานที่ CPU สั่งมาใหม่ไม่ได้ทันที CPU จึงทิ้งงานไว้ใน Buffer พอ HDD ทำงานเสร็จก็จะเอารับงานจาก Buffer ไปทำงานต่อ โดยที่ CPU ไม่ต้องมารอให้ HDD ทำงานให้เสร็จ CPU จะได้ไปทำงานอย่างอื่นต่อได้เลย

    ขออภัย ไม่มีความรู้เรื่องการใช้งานจริงแล้ว CPU cache มันจะได้เก็บข้อมูลเรียงตามอะไร

    Comment


    • #17
      L2 มีเงินสดอยู่ในกระเป๋าตังค์ จำเป็นต้องซื้อของก็ควักได้เลย ไม่ต้องไปกดATMให้เสียเวลา หรือรูดบัติเครดิตให้เสียดอกเบี้ย
      L3 มีเงินสดแต่อยู่กับเมีย ใช้ได้แต่ต้องขอ ช้าหน่อยแต่ก็ดีกว่าไม่มี

      Comment

      Working...
      X