คำถามติดแท็ก cpu-architecture

microarchitecture ฮาร์ดแวร์ (x86, x86_64, ARM, ... ) ของ CPU หรือไมโครคอนโทรลเลอร์

4
การยกเลิกโปรแกรมสำหรับขั้นตอนการทำงานใน CPU ตระกูล Intel Sandybridge
ฉันกำลังใช้สมองของฉันเป็นเวลาหนึ่งสัปดาห์เพื่อพยายามทำงานนี้ให้เสร็จและฉันหวังว่าจะมีใครบางคนที่นี่สามารถพาฉันไปสู่เส้นทางที่ถูกต้อง ให้ฉันเริ่มต้นด้วยคำแนะนำของผู้สอน: การมอบหมายของคุณตรงข้ามกับการมอบหมายห้องปฏิบัติการครั้งแรกของเราซึ่งเป็นการเพิ่มประสิทธิภาพของโปรแกรมหมายเลขเฉพาะ จุดประสงค์ของคุณในการมอบหมายนี้คือการหยุดโปรแกรมให้น้อยที่สุดนั่นคือทำให้มันช้าลง ทั้งสองนี้เป็นโปรแกรมที่ใช้ CPU มาก ใช้เวลาสองสามวินาทีในการทำงานบนพีซีในห้องปฏิบัติการของเรา คุณไม่สามารถเปลี่ยนอัลกอริทึม ในการ deoptimize โปรแกรมใช้ความรู้ของคุณในการทำงานของไปป์ไลน์ Intel i7 ลองจินตนาการถึงวิธีการสั่งซื้อเส้นทางการสอนใหม่เพื่อแนะนำ WAR, RAW และอันตรายอื่น ๆ คิดถึงวิธีลดประสิทธิภาพของแคชให้เล็กที่สุด ไร้ความสามารถอย่างบ้าคลั่ง ที่ได้รับมอบหมายให้เลือกโปรแกรม Whetstone หรือ Monte-Carlo ความคิดเห็นแคชประสิทธิภาพส่วนใหญ่จะใช้เฉพาะกับ Whetstone แต่ฉันเลือกโปรแกรมจำลอง Monte-Carlo: // Un-modified baseline for pessimization, as given in the assignment #include <algorithm> // Needed for the "max" function #include <cmath> #include …

3
retpoline คืออะไรและทำงานอย่างไร
เพื่อลดกับเคอร์เนลหรือหน่วยความจำการเปิดเผยกระบวนการข้าม (คนปีศาจโจมตี), ลินุกซ์เคอร์เนล1จะได้รับการรวบรวมกับตัวเลือกใหม่ , -mindirect-branch=thunk-externแนะนำให้รู้จักกับgccการดำเนินการโทรทางอ้อมผ่านสิ่งที่เรียกว่าretpoline สิ่งนี้ดูเหมือนจะเป็นคำที่ประดิษฐ์ขึ้นใหม่เนื่องจากการค้นหาของ Google เปิดใช้งานเมื่อไม่นานมานี้เท่านั้น (โดยทั่วไปแล้วทั้งหมดในปี 2561) retpoline คืออะไรและป้องกันการเปิดเผยข้อมูลเคอร์เนลล่าสุดได้อย่างไร 1มันไม่ได้เป็นลินุกซ์ที่เฉพาะเจาะจง - โครงสร้างที่คล้ายกันหรือเหมือนกันดูเหมือนจะใช้เป็นส่วนหนึ่งของกลยุทธ์การลดผลกระทบในระบบปฏิบัติการอื่น ๆ

3
วัตถุประสงค์ของการตั้งค่า“ 32 บิตแบบพิเศษ” ใน Visual Studio คืออะไรและใช้งานได้จริงอย่างไร
ไม่มีความชัดเจนสำหรับฉันว่าคอมไพเลอร์จะรู้การรวบรวม 64 บิตโดยอัตโนมัติอย่างไรเมื่อต้องการ จะทราบได้อย่างไรว่าสามารถกำหนดเป้าหมายไปที่ 32 บิตได้อย่างมั่นใจ ฉันส่วนใหญ่สงสัยว่าคอมไพเลอร์รู้ว่าสถาปัตยกรรมใดที่ต้องกำหนดเป้าหมายเมื่อรวบรวม มันวิเคราะห์รหัสและตัดสินใจตามสิ่งที่พบหรือไม่

6
ความแตกต่างระหว่างคอร์และโปรเซสเซอร์
อะไรคือความแตกต่างระหว่างคอร์และโปรเซสเซอร์? ฉันได้ค้นหาแล้วบน Google แต่ฉันเพิ่งมีข้อกำหนดแบบ multi-core และ multi-processor แต่ไม่ตรงกับสิ่งที่ฉันกำลังมองหา

3
สิ่งที่โปรแกรมเมอร์ทุกคนควรรู้เกี่ยวกับหน่วยความจำ
ฉันสงสัยว่า Ulrich Drepper เป็นเท่าใดโปรแกรมเมอร์ทุกคนควรทราบเกี่ยวกับหน่วยความจำจากปี 2007 ยังคงใช้ได้ ฉันไม่สามารถหาเวอร์ชั่นที่ใหม่กว่า 1.0 หรือ errata ได้

9
ความแตกต่างระหว่างกับดักและขัดจังหวะคืออะไร?
ความแตกต่างระหว่างกับดักและขัดจังหวะคืออะไร? หากคำศัพท์นั้นแตกต่างกันสำหรับระบบที่แตกต่างกันพวกมันหมายถึงอะไรใน x86?

2
อะไรคือความแตกต่างระหว่าง sjlj vs dwarf vs seh?
ฉันหาข้อมูลไม่เพียงพอที่จะตัดสินใจว่าฉันควรใช้คอมไพเลอร์ใดในการรวบรวมโครงการของฉัน มีหลายโปรแกรมในคอมพิวเตอร์ที่ต่างกันจำลองกระบวนการ บน Linux ฉันใช้ GCC ทุกอย่างยอดเยี่ยม ฉันสามารถเพิ่มประสิทธิภาพรหัสมันรวบรวมอย่างรวดเร็วและใช้หน่วยความจำไม่มาก ฉันทำมาตรฐานของตัวเองด้วยคอมไพเลอร์ MSVC และ GCC หลังจากนั้นหนึ่งสร้างไบนารีเร็วขึ้นเล็กน้อย (สำหรับแต่ละ subar Architecture) แม้ว่าเวลาในการรวบรวมจะมากกว่า MSVC ดังนั้นฉันจึงตัดสินใจใช้ MinGW แต่ไม่พบคำอธิบายใด ๆ เกี่ยวกับวิธีการจัดการข้อยกเว้นและการใช้งานใน MinGW ฉันสามารถใช้การกระจายที่แตกต่างกันสำหรับระบบปฏิบัติการและสถาปัตยกรรมที่แตกต่างกัน การพิจารณา: เวลารวบรวมและหน่วยความจำไม่สำคัญสำหรับการใช้งานของฉัน สิ่งสำคัญเท่านั้นคือการปรับให้เหมาะสมแบบรันไทม์ ฉันต้องการโปรแกรมของฉันให้เร็วพอ คอมไพเลอร์ช้าเป็นที่ยอมรับ ระบบปฏิบัติการ: Microsoft Windows XP / 7/8 / Linux สถาปัตยกรรม: Intel Core i7 / Core2 / และ i686 รุ่นเก่าที่รัน XP: P

12
เหตุใดบูลีน 1 ไบต์และไม่ใช่ขนาด 1 บิต
ใน C ++ เหตุใดบูลีน 1 ไบต์และไม่ใช่ขนาด 1 บิต ทำไมไม่มีประเภทเช่นจำนวนเต็ม 4 บิตหรือ 2 บิต ฉันพลาดสิ่งต่างๆข้างต้นเมื่อเขียนโปรแกรมจำลองสำหรับ CPU

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

10
ทำไม x86 ถึงน่าเกลียด? ทำไมถึงถูกมองว่าด้อยกว่าเมื่อเทียบกับคนอื่น? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา เมื่อเร็ว ๆ นี้ฉันได้อ่านไฟล์เก็บถาวร SO และพบข้อความที่ต่อต้านสถาปัตยกรรม x86 เหตุใดเราจึงต้องการสถาปัตยกรรม CPU ที่แตกต่างกันสำหรับเซิร์ฟเวอร์และมินิ / เมนเฟรมและคอร์ผสม กล่าวว่า " สถาปัตยกรรมพีซีเป็นเรื่องยุ่งนักพัฒนาระบบปฏิบัติการทุกคนจะบอกคุณว่า " การเรียนภาษา Assembly คุ้มค่ากับความพยายามหรือไม่? (เก็บถาวร ) ระบุว่า "ตระหนักว่าสถาปัตยกรรม x86 นั้นน่ากลัวที่สุด " วิธีง่ายๆในการเรียนรู้ x86 แอสเซมเบลอร์หรือไม่? กล่าวว่า " วิทยาลัยส่วนใหญ่สอนเรื่องการชุมนุมเช่น MIPS เพราะเข้าใจง่ายกว่ามากการประกอบ x86 น่าเกลียดมาก " และความคิดเห็นอื่น ๆ อีกมากมายเช่น "เมื่อเทียบกับสถาปัตยกรรมส่วนใหญ่ X86 ค่อนข้างแย่" …

5
ทะเบียน“ FS” /“ GS” มีไว้เพื่ออะไร?
ดังนั้นฉันจึงรู้ว่าการลงทะเบียนต่อไปนี้และการใช้งานควรจะเป็นอย่างไร: CS = กลุ่มรหัส (ใช้สำหรับ IP) DS = กลุ่มข้อมูล (ใช้สำหรับ MOV) ES = ส่วนปลายทาง (ใช้สำหรับ MOVS ฯลฯ ) SS = Stack Segment (ใช้สำหรับ SP) แต่การลงทะเบียนต่อไปนี้มีไว้เพื่อใช้ทำอะไร? FS = "ส่วนของไฟล์"? GS = ??? หมายเหตุ: ฉันไม่ได้ถามเกี่ยวกับระบบปฏิบัติการใด ๆ - ฉันกำลังถามเกี่ยวกับสิ่งที่พวกเขาตั้งใจจะใช้กับ CPU ถ้ามีอะไร

10
เหตุใดระบบ x86-64 จึงมีพื้นที่แอดเดรสเสมือน 48 บิตเท่านั้น
ในหนังสือฉันอ่านสิ่งต่อไปนี้: โปรเซสเซอร์ 32 บิตมีแอดเดรสที่เป็นไปได้ 2 ^ 32 ในขณะที่โปรเซสเซอร์ 64 บิตปัจจุบันมีพื้นที่แอดเดรส 48 บิต ความคาดหวังของฉันคือถ้าเป็นโปรเซสเซอร์ 64 บิตพื้นที่แอดเดรสควรเป็น 2 ^ 64 ผมเลยสงสัยว่าเหตุผลของข้อ จำกัด นี้คืออะไร?

14
ความแตกต่างระหว่างคำและไบต์คืออะไร?
ฉันได้ทำการวิจัยบางอย่าง ไบต์คือ 8 บิตและคำเป็นหน่วยที่เล็กที่สุดที่สามารถระบุบนหน่วยความจำได้ ความยาวที่แน่นอนของคำจะแตกต่างกันไป สิ่งที่ฉันไม่เข้าใจคือจุดของการมีไบต์คืออะไร? ทำไมไม่พูด 8 บิต? ฉันถามคำถามนี้กับศาสตราจารย์คนหนึ่งและเขาบอกว่าเครื่องส่วนใหญ่ในปัจจุบันสามารถระบุได้แบบไบต์ แต่จะให้คำว่าอะไร?

5
เขียนกลับหรือเขียนผ่านแคช?
ความเข้าใจของฉันคือความแตกต่างที่สำคัญระหว่างสองวิธีคือในวิธีการ "เขียนผ่าน" ข้อมูลจะถูกเขียนไปยังหน่วยความจำหลักผ่านแคชทันทีในขณะที่ข้อมูล "เขียนกลับ" จะถูกเขียนใน "ครั้งหลัง" เรายังคงต้องรอความทรงจำใน "ครั้งหลัง" ดังนั้น "การเขียนผ่าน" มีประโยชน์อย่างไร?

3
ต้นทุนการดำเนินการของอะตอม
ค่าใช้จ่ายของการดำเนินการของอะตอมคืออะไร (เปรียบเทียบและแลกเปลี่ยนหรือเพิ่ม / ลดอะตอม)? กินรอบเท่าไหร่? มันจะหยุดโปรเซสเซอร์อื่นบน SMP หรือ NUMA หรือจะบล็อกการเข้าถึงหน่วยความจำหรือไม่ จะล้างบัฟเฟอร์เรียงลำดับใหม่ใน CPU ที่ไม่ได้รับคำสั่งหรือไม่? จะมีผลอะไรกับแคชบ้าง? ฉันสนใจซีพียูรุ่นใหม่ยอดนิยม: x86, x86_64, PowerPC, SPARC, Itanium

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.