นี่เป็นคำถามทั่วไปที่ไม่มีคำตอบง่าย ๆ มันเป็นทางยาวจากอิเล็กตรอนที่พุ่งไปตามสายทองแดงจนถึงการเรนเดอร์เว็บไซต์ใน Firefox ฉันจะพยายามให้ภาพรวมจากล่างขึ้นบนและนำคุณไปสู่สิ่งที่ถูกต้องเพื่อค้นหา
การเข้ารหัสตัวเลข
แรงจูงใจพื้นฐานคือการคำนวณสิ่งต่าง ๆ เช่นในการทำเลขคณิต¹ สิ่งแรกที่ต้องดูคือวิธีการแสดงตัวเลข มีวิธีการมากมายโดยใช้ทศนิยมหรือไตรภาคและฉันคิดว่าแม้ระบบฐานแปด แต่ในที่สุดก็ชนะไบนารี ตอนนี้เรารู้ว่าเราต้องสร้างอุปกรณ์ที่จัดการกับสองค่า - ขอเรียกพวกเขาและ101
โปรดทราบว่ามีหลายวิธีในการเข้ารหัสตัวเลขในไบนารี หลังจากที่คุณสร้างโปรเซสเซอร์ตัวแรกขึ้นมาคุณจะได้รับประโยชน์จากการทำสิ่งต่าง ๆ ในบางวิธี ตัวอย่างที่เป็นที่นิยมเป็นสองสมบูรณ์และIEEE ลอย สำหรับผู้เริ่ม จำกัด ตัวเองให้เป็นตัวเลขธรรมดา
เกตส์
สมมติว่าเราใช้การเข้ารหัสไบนารี คิดว่าคุณเรียนรู้การเพิ่มในโรงเรียนประถมศึกษาและเขียนเลขฐานสองแบบเดียวกันได้อย่างไร เมื่อปรากฎว่าหน่วยการสร้างของพีชคณิตแบบบูลนั้นมีอยู่สำหรับคุณแล้ว มันง่ายในการสร้างadderพื้นฐาน(และฟังก์ชันทางคณิตศาสตร์อื่น ๆ ) โดยใช้ลอจิกเกต
วิธีสร้างประตูดังกล่าวนั้นอยู่นอกขอบเขตของวิทยาศาสตร์คอมพิวเตอร์ วิศวกรรม Eletricalได้จัดให้มีการแก้ปัญหาต่างๆโดยใช้เช่นหลอดหรือทรานซิสเตอร์ ตรงไปที่การแลกเปลี่ยนกองวิศวกรรมไฟฟ้าสำหรับคำถามเกี่ยวกับเรื่องนี้
นาฬิกาและรัฐ
ไม่ใช่ทุกประตูที่เร็วพอ ๆ กันและบางส่วนของการคำนวณมีจำนวนประตูเท่ากัน ดังนั้นเราจึงต้องระมัดระวังเป็นพิเศษเพื่อให้การปฏิบัติงานของแต่ละบุคคลไม่เกิดขึ้น มันพิสูจน์แล้วว่ามีประโยชน์ในการใช้นาฬิกาทั่วโลก; ผลลัพธ์ของเครือข่ายของประตูที่กำหนดคือสถานะของสายสัญญาณเอาท์พุทเมื่อสิ้นสุดรอบการทำงาน (ซึ่งอาจเปลี่ยนแปลงอย่างดุเดือด
นั่นหมายความว่าผลลัพธ์ของรอบหนึ่งอาจต้องถูกเก็บไว้จนกว่ารอบต่อไปจะเริ่มขึ้นเช่นหากคุณต่อสายลูป มีองค์ประกอบพื้นฐานจำนวนหนึ่งที่คุณสามารถใช้เพื่อสร้างเอฟเฟกต์ต่าง ๆ ทั้งหมดนี้สร้างขึ้นจากประตู บางคนเรียกว่าflip-flop สิ่งเหล่านี้ยังใช้เพื่อสร้างรีจิสเตอร์องค์ประกอบที่เก็บหมายเลขสำหรับวงจรนาฬิกาได้มากเท่าที่ต้องการ
สถาปัตยกรรมและคำสั่ง
ตอนนี้คุณมีตัวเลือกการออกแบบมากมายให้เลือก โปรเซสเซอร์ของคุณมีการดำเนินการทางคณิตศาสตร์อะไรบ้าง? คำสั่งของคุณมีลักษณะอย่างไร อาจเป็นการศึกษาที่จะดูสถาปัตยกรรม MIPSที่มีรูปแบบเริ่มต้นง่ายเมื่อเทียบกับการออกแบบอื่น ๆ ดูที่แผน :
ต้นฉบับจากhttp://ube.ege.edu.tr/~erciyes/CENG311
โดยพื้นฐานแล้วการดึงและแยกส่วนคำสั่งชุดของการลงทะเบียนALUและการควบคุม คำสั่งเข้ารหัสการทำงานของ ALU เพื่อดำเนินการกับตัวถูกดำเนินการ (ตามจำนวนของการลงทะเบียนที่พวกเขาอยู่) วิธีการจัดการโปรแกรมตัวนับ²หรือที่ลงทะเบียนเพื่อโหลด / เก็บจาก / ไปยังหน่วยความจำ³
ข้อควรพิจารณาเพิ่มเติม
ถึงตอนนี้คุณมีหน่วยประมวลผลที่ทำงานได้ในความทันสมัยโดยสมมติว่าคุณเข้าใจวิธีการสร้างหน่วยความจำและวิธีป้อนคำสั่ง ระหว่างทางไปสู่เครื่องจักรที่ทันสมัยต้องมีทางเลือกมากมาย นี่คือบางส่วน:
ทางเลือก
ข้างต้นได้รับอิทธิพลอย่างมากจากการที่ประวัติศาสตร์ปรากฎออกมาอย่างไร ในโลกที่แตกต่างที่มีจิตใจต่างกันคอมพิวเตอร์อาจทำงานแตกต่างกัน ในความเป็นจริงมีหลายรูปแบบของการคำนวณซึ่งมีข้อดีที่ทำให้พวกเขามีประโยชน์เป็นนามธรรมสำหรับเครื่องจริงในหลายกรณี นอกจากนี้ยังมีความพยายามที่จะเลียนแบบวิธีการที่สมองของเราทำงานที่มีการเปิดใช้งานคอมพิวเตอร์ระบบประสาทหรืออื่น ๆ โดยทั่วไปจะใช้ประโยชน์จากกลยุทธ์ในการแก้ปัญหาและการจัดเก็บข้อมูลที่สังเกตในลักษณะเด่นที่สุดดีเอ็นเอและควอนตัมคอมพิวเตอร์
ดังนั้นอาจ (หวังว่า) ข้อมูลข้างต้นเป็นประวัติศาสตร์โบราณทั้งหมดอีก 50 หรือ 100 ปีนับจากนี้
- ทุกสิ่งที่เราทำกับคอมพิวเตอร์ทุกวันนี้ถูกแบ่งย่อยเป็นงานเลขคณิตเล็ก ๆ ซึ่งโปรเซสเซอร์ดำเนินการไปทีละตัว
- หากโมเดลของคุณอนุญาตให้โปรแกรมจัดการกับโฟลว์ควบคุมนี่จะเป็นที่อยู่หน่วยความจำที่หน่วยประมวลผลได้รับคำแนะนำถัดไป นอกจากนี้คุณยังสามารถตั้งค่าเครื่องที่อ่านเฉพาะชุดคำสั่งจากเทปพูด ในความเป็นจริงการใช้งานในช่วงต้นทำเช่นนั้น ไม่มีการกระโดดหมายถึงไม่มีการวนซ้ำ โปรแกรมเป็นชุดคำสั่งที่ยังไม่ได้ควบคุมอย่างสมบูรณ์โดยขึ้นอยู่กับข้อมูล เห็นได้ชัดว่าความสามารถในการใช้โปรแกรมเดียวกันสำหรับข้อมูลอินพุตหลายรายการนั้นมีประสิทธิภาพมากกว่า
- สมมติว่าคุณมีหน่วยความจำ โปรเซสเซอร์ของคุณทำงานได้ดีโดยไม่ต้องมี แต่สามารถจัดการกับค่ามากมายในครั้งเดียวเท่านั้น คอมพิวเตอร์ยุคแรก ๆ ได้อ่านข้อมูลทั้งหมดจากเทปและเก็บไว้ในทะเบียน ไม่มีหน่วยความจำให้เหลือพื้นที่เก็บข้อมูลแบบเขียนได้อย่างเดียวที่เรารู้ได้ในปัจจุบัน