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

คำถามเกี่ยวกับองค์กรและการออกแบบฮาร์ดแวร์คอมพิวเตอร์

3
ซีพียูที่ออกแบบมาเพื่อการเขียนโปรแกรมฟังก์ชั่นจะแตกต่างกันอย่างไร
ซีพียูมีขอบเขตที่ออกแบบโดยคำนึงถึงซอฟต์แวร์ที่ผู้คนจะเขียนให้โดยปริยายหรือโดยชัดแจ้ง ดูเหมือนว่าถ้าคุณดูที่การออกแบบชุดสถาปัตยกรรมของชุดคำสั่งพวกเขามีความ "จำเป็น" ในแง่ที่ว่าแต่ละคำสั่งนั้นเข้ารหัสคำสั่งสไตล์ที่จำเป็น สำหรับฉันแล้วดูเหมือนว่าชุดคำสั่งสถาปัตยกรรมปัจจุบันได้พัฒนาขึ้นมาบางส่วนโดยขึ้นอยู่กับประเภทของการเขียนโปรแกรมโค้ด ถ้าใครจะออกแบบ CPU จากศูนย์รู้ว่ามันจะใช้งานโปรแกรมที่เขียนในรูปแบบการเขียนโปรแกรมที่ใช้งานได้เท่านั้น CPU นั้นจะออกแบบให้แตกต่างจาก CPU ที่มีอยู่ได้อย่างไร

7
โปรแกรมดำเนินการที่ระดับ CPU อย่างไร
ฉันรู้ว่านี่เป็นคำถามที่พบบ่อยมาก แต่ฉันมีมุมที่แตกต่างในใจของฉัน ฉันจะพยายามทำให้ชัดเจนที่นี่ จากสิ่งที่ฉันรู้ทุกคำสั่งที่ CPU ดำเนินการอยู่ในภาษาเครื่องและ CPU ทั้งหมดสามารถทำได้คือการดำเนินการทางคณิตศาสตร์ด้วย ALU และทรานซิสเตอร์ (ถ้าเราไปที่ระดับฮาร์ดแวร์) อย่างไรก็ตามวิธีนี้ง่ายกว่าการพิมพ์เพื่อทำความเข้าใจ ดังนั้นหาก CPU ทั้งหมดทำการบวกลบออกแล้วเป็นอย่างไรโปรแกรมพูดว่าโปรแกรม JAVA ว่าพิมพ์ Hello World ดำเนินการกับการคำนวณทางคณิตศาสตร์เหล่านี้อย่างไร ฉันหมายถึงโปรแกรมนี้ถูกแปลงเป็นสิ่งที่เป็นเพียงส่วนเสริมสำหรับซีพียูอย่างไร ป.ล. หากคำถามนี้ใช้ไม่ได้กับเว็บไซต์นี้ฉันต้องขออภัย ----- ตอนที่สอง ----- ตกลง. ขอบคุณทุกคนที่ตอบคำถามนี้อย่างรวดเร็วและด้วยความกระตือรือร้น ฉันคิดว่าการแก้ไขคำถามของฉันจะดีกว่าไปแสดงความคิดเห็นต่อคำตอบทั้งหมดแล้วถามพวกเขาอีกครั้ง ดังนั้นนี่คือ ก่อนอื่นทุกคนตอบคำถามตัวอย่างของ Hello World โดยเฉพาะ นี่คือความผิดของฉัน ฉันควรเก็บยาสามัญนี้ไว้ สวัสดีตัวอย่างโลกนำมาซึ่งคำถามเกี่ยวกับอุปกรณ์ส่งออกและวิธีการประมวลผลของมันไม่ได้ จำกัด อยู่เพียงแค่ CPU ซึ่งถูกนำขึ้นมาอย่างถูกต้องในคำตอบของคุณ ยังมีพวกคุณหลายคนที่ทราบว่า CPU ทำมากกว่าแค่เพิ่ม ฉันเห็นด้วยกับที่ ฉันไม่ได้เขียนมันและคิดไปตลอดทาง จากสิ่งที่ฉันเข้าใจนี่คือกระบวนการ: อ่านคำแนะนำจากหน่วยความจำ (โดยใช้ข้อมูลและที่อยู่รถประจำทางและสิ่งที่เคาน์เตอร์โปรแกรม) เก็บข้อมูลใน …

6
การหาค่า XOR สูงสุดของตัวเลขสองตัวในช่วงเวลาหนึ่ง: เราจะทำได้ดีกว่าสมการกำลังสองหรือไม่?
สมมติว่าเรากำลังได้รับสองหมายเลขและและที่เราต้องการที่จะหาสำหรับL \ le i, \, J \ le Rlllrrrmax(i⊕j)max(i⊕j)\max{(i\oplus j)}l≤i,j≤rl≤i,j≤rl\le i,\,j\le r อัลกอริทึมnaïveเพียงตรวจสอบคู่ที่เป็นไปได้ทั้งหมด เช่นในทับทิมเรามี: def max_xor(l, r) max = 0 (l..r).each do |i| (i..r).each do |j| if (i ^ j > max) max = i ^ j end end end max end ฉันรู้สึกว่าเราสามารถทำได้ดีกว่าสมการกำลังสอง มีอัลกอริทึมที่ดีกว่าสำหรับปัญหานี้หรือไม่?

2
องค์กรและสถาปัตยกรรมของคอมพิวเตอร์ควอนตัม
อุปกรณ์และการเชื่อมต่อระหว่างกันใช้กับโปรเซสเซอร์ควอนตัมคืออะไร? พวกเขาเข้ากันได้กับอุปกรณ์ฮาร์ดแวร์เช่นแคช, RAM, ดิสก์ของคอมพิวเตอร์ปัจจุบันหรือไม่?

1
งานวิจัยเกี่ยวกับการประเมินประสิทธิภาพของการลืมแคชในทางปฏิบัติ
อัลกอริทึมแคชและโครงสร้างข้อมูลที่ลืมเลือนเป็นสิ่งที่ค่อนข้างใหม่แนะนำโดย Frigo et al ในขั้นตอนวิธีการแคชลบเลือน 1999 วิทยานิพนธ์ของ Prokop ในปีเดียวกันนั้นได้เสนอแนวคิดเบื้องต้นเช่นกัน กระดาษโดย Frigo และคณะ นำเสนอผลการทดลองแสดงให้เห็นถึงศักยภาพของทฤษฎีและอัลกอริธึมที่ขาดการแคชและโครงสร้างข้อมูล โครงสร้างข้อมูลที่ลืมแคชจำนวนมากขึ้นอยู่กับโครงสร้างการค้นหาแบบสแตติก วิธีการจัดเก็บและสำรวจต้นไม้เหล่านี้ได้รับการพัฒนามาไม่มากนักโดยเฉพาะอย่างยิ่ง Bender et al และโดย Brodal และคณะ Demaine ให้ดีภาพรวม งานทดลองของการตรวจสอบพฤติกรรมแคชในทางปฏิบัติได้ทำอย่างน้อยโดย Ladner และคณะ ในการเปรียบเทียบแคชรอบรู้และ Cache ลบเลือนคงค้นหาต้นไม้โดยใช้โปรแกรม Instrumentation 2002 Ladner และคณะ เปรียบเทียบพฤติกรรมแคชของอัลกอริทึมในการแก้ปัญหาการค้นหาแบบไบนารีโดยใช้อัลกอริธึมแบบคลาสสิกอัลกอริธึมที่ลืมแคชและอัลกอริธึมที่รับรู้แคช อัลกอริทึมแต่ละตัวถูกเปรียบเทียบกับวิธีการนำทางทั้งทางตรงและทางอ้อม นอกจากนี้วิทยานิพนธ์ของRønn, 2003 ได้วิเคราะห์อัลกอริธึมเดียวกันให้มีรายละเอียดค่อนข้างสูงและยังทำการทดสอบอัลกอริทึมเดียวกันกับ Ladner และคณะ คำถามของฉันคือ มีการวิจัยใหม่ ๆ เกี่ยวกับการเปรียบเทียบพฤติกรรมแคชของอัลกอริธึมการลืมแคชในทางปฏิบัติตั้งแต่นั้นมาหรือไม่? ฉันสนใจโดยเฉพาะอย่างยิ่งในประสิทธิภาพของแผนภูมิการค้นหาแบบคงที่ แต่ฉันก็จะมีความสุขกับอัลกอริทึมและโครงสร้างข้อมูลที่ลืมแคชอื่น ๆ

3
หน่วยประมวลผลหารหัสเคอร์เนลหลังจากถูกขัดจังหวะได้อย่างไร
เมื่อการขัดจังหวะเกิดขึ้นโปรเซสเซอร์จะดำเนินการกระบวนการปัจจุบันและเรียกใช้รหัสเคอร์เนลเพื่อจัดการการขัดจังหวะ โปรเซสเซอร์รู้ได้อย่างไรว่าจะเข้าไปยังเคอร์เนลอย่างไร ฉันเข้าใจว่ามีตัวจัดการขัดจังหวะซึ่งสามารถติดตั้งสำหรับแต่ละบรรทัดขัดจังหวะ แต่เนื่องจากโปรเซสเซอร์ประมวลผล 'hardwired logic' เท่านั้นจึงต้องมีสถานที่ที่กำหนดไว้ล่วงหน้าซึ่งชี้ไปที่ interrupt handler เองหรือบางรหัสที่ประมวลผลก่อน handler (เนื่องจากอาจมีตัวจัดการหลายตัวสำหรับ interrupt line หนึ่งผมถือว่า หลัง)

2
สถาปัตยกรรมซีพียูมีอคติต่อการดำเนินการตามขั้นตอนหรือไม่?
มีการเปลี่ยนแปลงใด ๆ ที่ทำให้ซีพียูทำงานได้ดีขึ้นสำหรับรันไทม์ที่เกิดขึ้นพร้อมกันเช่น Rust หรือไม่? ตัวอย่างเช่นมีการเปลี่ยนแปลงการนำไปใช้การทำนายสาขาหรือขนาดแคชที่จะช่วยรันไทม์พร้อมกันหรือไม่ ฉันรู้สึกว่าการออกแบบ CPU ในปัจจุบันอาจได้รับการปรับให้เหมาะสมยิ่งขึ้นสำหรับ runtimes แบบโพรซีเดอร์เช่น C หากเราต้องการปรับให้เหมาะสมสำหรับ runtimes ที่เกิดขึ้นพร้อมกัน CPU จะดูแตกต่างกันอย่างไร สำหรับ isntance การคาดคะเนสาขาถูกนำมาใช้บนพื้นฐานของการสรุปทั่วไปในเอกสารงานวิจัยที่วิเคราะห์รหัสขั้นตอน ฉันสงสัยว่าสิ่งที่เป็นนามธรรมที่เกิดขึ้นพร้อมกันจะเพิ่มชุดการทำงานที่สำคัญให้กับรันไทม์ที่ส่งผลเสียต่ออัลกอริทึมการทำนายสาขาที่มีอยู่หรือไม่ ตัวอย่างเช่นการคาดการณ์ใน for for loop เป็นสิ่งหนึ่ง แต่เมื่อเป้าหมายของสาขาเป็นส่วนใหม่ของหน่วยความจำเสมอ (กราฟิก, ข้อความ, ฯลฯ ) มันจะเป็นแคชที่พลาดเสมอและจะไม่มีสาขา ประวัติศาสตร์สำหรับมัน - เพราะยังไม่ได้แตะต้องเลย นี่อาจเป็นคำถามที่งี่เง่าเพราะเนื้อหาแม้ว่ามันอาจจะอยู่ใน RAM เสมอ แต่จะถูกแยกเป็นลำดับความสำคัญน้อยกว่าที่จะใช้ (เมื่อโหลดไปยังแคช) ... แต่ยังมี ควรเป็นขอบเขตชั่วคราวที่สามารถสังเกตได้กับบริบทที่เก็บไว้ในแคชและตัวทำนายสาขาในรันไทม์ของขั้นตอนซึ่งจะแสดงให้เห็นว่าเป็นนามธรรม - ขอบเขตในสภาพแวดล้อมที่ขนานกันมากขึ้น ดังนั้นฉันสงสัย ... มีการปฏิบัติตามขอบเขตเหล่านี้หรือไม่? มีงานวิจัยใดบ้างที่วิเคราะห์สิ่งนี้? สถาปัตยกรรมของ …

3
มีเครื่องนามธรรมที่สามารถจับการใช้พลังงานหรือไม่
เมื่อรายงานความซับซ้อนของอัลกอริทึมของอัลกอริทึมเราจะถือว่าการคำนวณพื้นฐานดำเนินการกับเครื่องนามธรรม (เช่น RAM) ที่ใกล้เคียงกับ CPU ที่ทันสมัย โมเดลดังกล่าวช่วยให้เราสามารถรายงานเวลาและพื้นที่ที่ซับซ้อนของอัลกอริทึม ตอนนี้ด้วยการแพร่กระจายของGPGPUsหนึ่งสงสัยว่ามีรูปแบบที่รู้จักกันดีที่หนึ่งสามารถคำนึงถึงการใช้พลังงานเช่นกัน GPU เป็นที่รู้จักกันดีในการใช้พลังงานจำนวนมากและคำแนะนำบางอย่างแบ่งเป็นหมวดหมู่ของการใช้พลังงานตามความซับซ้อนและตำแหน่งของชิปที่ซับซ้อน ดังนั้นคำแนะนำจากพลังงานในมุมมองจึงไม่ได้เป็นต้นทุนต่อหน่วย (หรือแม้แต่ค่าคงที่) ส่วนขยายเล็กน้อยจะกำหนดน้ำหนักให้กับค่าใช้จ่ายในการดำเนินการ แต่ฉันกำลังมองหาแบบจำลองที่ทรงพลังซึ่งการดำเนินการ / การเรียนการสอนอาจมีค่าหน่วยพลังงานที่ไม่คงที่เช่นจำนวนพหุนาม (หรือซับซ้อนกว่าเช่น: ของอัลกอริทึมหรือคำนึงถึงความน่าจะเป็นของความล้มเหลวของระบบทำความเย็นซึ่งจะทำให้ชิปร้อนขึ้นและชะลอความถี่สัญญาณนาฬิกาเป็นต้น) มีโมเดลดังกล่าวที่สามารถรวมค่าใช้จ่ายและความผิดพลาดที่ไม่สำคัญได้หรือไม่

1
ทำไมต้องใช้ SIMD ถ้าเรามี GPGPU
ฉันคิดว่าคำถามนี้ตอบสนองได้ดีขึ้นในส่วน CS ของ Stack Exchange ตอนนี้เรามี GPGPU ที่ใช้ภาษาเช่น CUDA และ OpenCL แล้วส่วนขยาย SIMD มัลติมีเดีย (SSE / AVX / NEON) ยังมีจุดประสงค์หรือไม่ ฉันอ่านบทความเมื่อเร็ว ๆ นี้เกี่ยวกับวิธีการใช้คำสั่ง SSE เพื่อเร่งการคัดแยกเครือข่าย ฉันคิดว่ามันค่อนข้างเรียบร้อย แต่เมื่อฉันบอกอาจารย์วิชาคอมพ์เขาก็หัวเราะแล้วบอกว่าการใช้รหัสที่คล้ายกันบน GPU จะทำลายรุ่น SIMD ฉันไม่สงสัยเลยว่าเพราะ SSE นั้นง่ายมากและ GPU เป็นตัวเร่งความเร็วสูงที่มีความซับซ้อนสูงพร้อมความขนานมากขึ้น แต่ฉันคิดว่ามีสถานการณ์มากมายที่ส่วนขยาย SIMD มัลติมีเดียมีประโยชน์มากกว่าการใช้ GPU หรือไม่ ถ้า GPGPU ทำ SIMD ซ้ำซ้อนเหตุใด Intel จะเพิ่มการรองรับ SIMD ของพวกเขา SSE …

5
คอมพิวเตอร์ควอนตัมในอนาคตจะใช้ระบบเลขฐานสองสามส่วนหรือสามส่วนหรือไม่
คอมพิวเตอร์ปัจจุบันของเราใช้บิตดังนั้นพวกเขาจึงใช้ระบบเลขฐานสอง แต่ฉันได้ยินมาว่าคอมพิวเตอร์ควอนตัมในอนาคตจะใช้ qubits แทนบิตง่าย ๆ เนื่องจากในคำว่า "qubit" มีคำว่า "bi" ฉันแรกคิดว่านี่หมายความว่าคอมพิวเตอร์ควอนตัมจะใช้ไบนารี (ฐาน 2) แต่จากนั้นฉันได้ยินว่า qubits มีสถานะเป็นไปได้สามสถานะ: 0, 1, หรือการทับซ้อนของ 0 และ 1 ดังนั้นฉันจึงคิดว่านี่ต้องหมายความว่าพวกเขาจะใช้ไตรภาค (ฐาน 3) แต่ฉันเห็นว่าหนึ่ง qubit สามารถเก็บข้อมูลได้มากถึงสองบิต ดังนั้นฉันคิดว่านี่อาจหมายความว่าพวกเขาจะใช้สี่ (ฐาน 4) คอมพิวเตอร์ระบบควอนตัมในอนาคตจะใช้ระบบตัวเลขแบบไหน: ไบนารี่ไตรภาคหรือควอเทอร์นารี

2
คอมพิวเตอร์ใช้อุปกรณ์พกพาที่มองข้ามหรือไม่
มีรายละเอียดมากมายเกี่ยวกับตัวเสริมแบบพกพา lookahead เช่น Kogge-Stone, Lander-Fischer เป็นต้นในหลักสูตร CS ของวิทยาลัย พวกเขาอธิบายว่า "พบบ่อยในอุตสาหกรรม" อย่างไรก็ตามฉันไม่สามารถหาหลักฐานใด ๆ (นอกเหนือจากห่วงโซ่การขนส่งของแมนเชสเตอร์) จากครั้งล่าสุดที่มีการใช้จริงทุกที่โดยเฉพาะ การค้นหาโดย Google จะส่งคืนหน้าวารสารและงานวิจัยทางวิชาการเท่านั้น อย่างน้อยที่สุดจะมีการใช้งานตามสมมุติฐาน คำถามของฉันคือมีการใช้สถานที่ / การใช้งานที่เฉพาะเจาะจง add-carryahead หรือพวกเขาไม่เกี่ยวข้องกับโลกแห่งความจริง?

5
ทำไมการออกแบบระบบปฏิบัติการถึงสามารถลดการใช้พลังงานได้?
ฉันได้อ่านแล้วว่าระบบปฏิบัติการอย่าง Android และ iOS นั้นได้รับการปรับปรุงให้ดีขึ้นเพื่อปรับปรุงอายุการใช้งานแบตเตอรี่ ความเข้าใจของฉันคือ CPU ดำเนินการจำนวนหนึ่งในเวลาที่กำหนดดังนั้นฉันคิดว่าคุณสามารถเร่งความเร็วแอปพลิเคชันโดยลดจำนวนการดำเนินการที่ต้องการ แต่เนื่องจาก CPU จะยังคงทำงานxในเวลาyซึ่งไม่ควร ส่งผลกระทบต่อพลัง? นอกจากนี้หากกระบวนการใช้ RAM มากกว่าจะใช้พลังงานมากกว่าหรือไม่

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

2
Data General MV / 8000 คุณธรรมของ“ No mode bit”
ฉันกำลังอ่าน "วิญญาณของเครื่องใหม่" ของเทรซี่คิดเดอร์ที่ทีมงาน Data Data ออกแบบเครื่องใหม่ (ชื่อรหัส "Eagle" ซึ่งต่อมาชื่อว่า MV / 8000) มันเป็นส่วนขยาย 32 บิตของสถาปัตยกรรมก่อนหน้า (Eclipse 16 บิต) หนึ่งในชุดรูปแบบที่หมุนเวียนได้ดูเหมือนว่าพวกเขาไม่ต้องการสร้างเครื่องด้วยโหมดบิตและประสบความสำเร็จในสิ่งนี้ อย่างไรก็ตามมันทำให้เข้าใจได้ว่าเทคนิคนี้ประสบความสำเร็จได้อย่างไรและมันก็ไม่ได้อธิบายว่าทำไมมันถึงดึงดูดใจในการสร้างเครื่องโดยไม่ต้องบิตโหมด หนังสือเล่มนี้ไม่ใช่หนังสือทางเทคนิคดังนั้นจึงอาจเป็นไปได้ว่ารายละเอียดถูกบิดเบือนอย่างใด อย่างไรก็ตามคุณได้รับความรู้สึกในการอ่านหนังสือเล่มนั้นว่าวิธีการแก้ปัญหา "โหมดบิต" นั้นเป็นเรื่องปกติ (และเป็นไปได้) ในเวลานั้น แต่ก็ถือว่าวิศวกรไม่น่าสนใจด้วยเหตุผลด้านความงาม หนังสือเล่มนี้ยังทำให้ดูเหมือนเป็นงานที่ยากอย่างมากในการสร้างการออกแบบโดยไม่ต้องบิตโหมดซึ่งบางทีมก็เอาชนะมันได้ ฉันพบคำอธิบายเกี่ยวกับความสำเร็จ: http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt ดูเหมือนว่าโดยทั่วไปจะเกี่ยวกับการใช้พื้นที่ opcode ที่ไม่ได้ใช้ก่อนหน้านี้สำหรับคำแนะนำใหม่ ฉันต้องยอมรับว่าฉันผิดหวังเล็กน้อยว่ามันเป็น "แค่นั้น" นอกจากนี้ฉันคิดว่าสิ่งนี้ยังคงทิ้งคำถามไว้บ้าง ประการแรกกระบวนการ 16 บิตอาศัยอยู่ในพื้นที่ที่อยู่แบบ 32 บิตอย่างไร เพราะฉันคิดว่านี่เป็นความท้าทายหลักในการสร้างส่วนขยาย 32 บิต "โดยไม่ต้องใช้โหมดบิต" การขยายชุดคำสั่งในทางกลับกันเป็นกิจการที่ค่อนข้างทั่วไป เนื่องจากไม่มีคำอธิบายว่าเกิดขึ้นได้อย่างไรสมมติว่ารหัส 16 บิตเข้าถึงหน่วยความจำอย่างที่เคยทำบางทีมันอาจจะเห็นหน่วยความจำเสมือน / …

1
ทำไมการใช้ Hyper-threading จึงทำให้ประสิทธิภาพลดลง
ฉันได้อ่านมันในสถานที่ต่าง ๆ เช่นนี้แล้วการทำไฮเปอร์เธรดทำให้ประสิทธิภาพลดลง ฉันไม่สามารถหาสาเหตุหรือวิธีการไฮเปอร์เธรดที่นำไปสู่ความเสื่อมโทรม ทำไมถึงเป็นเช่นนั้นแม้เมื่อ Hyper-threading อนุญาตให้ระบบปฏิบัติการใช้ทรัพยากรฟรีการสลายตัวก็เกิดขึ้น แม้ว่าการวัดประสิทธิภาพจะบ่งบอกถึงการทำเกลียวมากเกินไปว่าเป็นผู้ร้าย แต่ใครบางคนสามารถอธิบายเหตุผลของเรื่องนี้ให้ฉันได้ ขอบคุณ

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