ทำไมนาฬิกาของฉันจึงมีนาฬิกา arduino


9

แน่นอนฉันรู้ว่ามันมีประโยชน์ในการควบคุมเวลาของความล่าช้า แต่การใช้งานอื่น ๆ ?

ด้วยนาฬิกา 16Mhz แต่ละบรรทัดในโปรแกรมของฉันจะใช้เวลา 1/16000000 วินาทีใช่ไหม

แม้แต่เส้นที่ใหญ่มาก ๆ จะใช้เวลาเพียง 1/16000000 วินาทีเท่านั้น?

ด้วยนาฬิกา 8MHz แต่ละบรรทัดจะใช้เวลาสองเท่าใช่มั้ย ดังนั้น "วงหลัก" ทั้งหมดจะใช้เวลาสองครั้งด้วยใช่ไหม


3
คุณกำลังสับสนระหว่างคำแนะนำ C กับคำแนะนำของเครื่องจักร (ชุดประกอบ) แต่แม้ว่าคุณจะเขียนโดยตรงในแอสเซมบลีคุณสามารถค้นหาการใช้งานที่ดีเนื่องจากโปรแกรมไม่เชิงเส้น ฉันหมายถึงการขัดจังหวะตามชื่อแนะนำขัดจังหวะการไหลของรหัสปกติโดยไปที่คำสั่งอื่นแล้วกลับมาทำงานต่อ ดังนั้นอาจจะอยู่ระหว่างหนึ่งบรรทัดและบรรทัดถัดไปมันถูกบังคับให้รัน ISR ซึ่งอาจยาวมาก
frarugi87

2
หากคุณนาฬิกาชิปของคุณที่แปด millihertz แม้แต่บรรทัดที่ง่ายที่สุดของรหัสจะใช้ตลอดไป ฉันแนะนำให้คุณใช้นาฬิกาในช่วงเมกะเฮิร์ตซ์ (MHz)
Edgar Bonet

จำนวนรอบของจำเป็นในการดำเนินการเรียนการสอนแต่ละเครื่องที่มีการระบุไว้ในคู่มือการใช้ชุดคำสั่ง
Edgar Bonet

ประณามฉันควรไปนอน;) ขอบคุณที่แก้ไข
n0tis

คำตอบ:


13

ทำไมนาฬิกาของฉันจึงมีนาฬิกา arduino

เพราะนั่นคือวิธีที่คอมพิวเตอร์และไมโครคอนโทรลเลอร์ ฯลฯ ทำงาน

ด้วยนาฬิกา 16mhz แต่ละบรรทัดในโปรแกรมของฉันจะใช้เวลา 1/16000000 วินาทีใช่ไหม

เลขที่

แม้แต่เส้นที่ใหญ่มาก ๆ จะใช้เวลาเพียง 1/16000000 วินาทีเท่านั้น?

เลขที่

นาฬิกาจะกำหนดความเร็วในการดึงข้อมูลคำสั่งรหัสเครื่องจากหน่วยความจำและดำเนินการ คำแนะนำส่วนใหญ่ใช้เวลา 1 รอบนาฬิกา แต่บางคำสั่งใช้เวลามากกว่า

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

ด้วยนาฬิกา 8mhz แต่ละบรรทัดจะใช้เวลาสองเท่าใช่มั้ย ดังนั้น "วงหลัก" ทั้งหมดจะใช้เวลาสองครั้งด้วยใช่ไหม

การทำงานทุกอย่างในชิปจะถูกควบคุมโดยนาฬิกา หากนาฬิกามีความเร็วเพียงครึ่งเดียวชิพจะทำงานที่ความเร็วครึ่งดังนั้นทุกการดำเนินการจะใช้เวลานานเป็นสองเท่าใช่


ยังขัดจังหวะ
njzk2

1
ผู้เยาว์ nitpick: ควรเป็น "... ที่ใดก็ได้จากคำแนะนำการประกอบ 0 ... " แม้ไม่มีเครื่องมือเพิ่มประสิทธิภาพ แต่ยิ่งเพิ่มขึ้นหลังจากการปรับให้เหมาะสม
ปีเตอร์

2
อย่าสับสนกับเด็กยากจน เขามีเวลามากพอเหมือนเดิม
Majenko

@ Majenko: ความสับสนเป็นสิ่งจำเป็น มันยาก.
intelfx

@intelfx "IT" หรือไม่ นี่คือการเขียนโปรแกรมไม่ใช่ IT ....
BalinKingOfMoria Reinstate CMs

10

ไม่ตอบในโพสต์ของ @ Majenko: ใช่ด้วยนาฬิกา 8MHz แต่ละบรรทัดจะใช้เวลาสองเท่า เว้นเสียแต่ว่าสายรอให้บางสิ่งบางอย่างที่ไม่ได้ขับเคลื่อนด้วยนาฬิกาเช่นอินพุตภายนอก

นอกเหนือจากคำตอบของ @ Majenko แล้วซีพียูยังมีนาฬิกาเพื่อให้แน่ใจว่าคำแนะนำนั้นสมบูรณ์ก่อนที่จะเริ่มขั้นตอนถัดไป ซีพียูนั้นทำมาจากทรานซิสเตอร์จำนวนมาก (ฉันพบการอ้างอิงที่ระบุว่า AtMega อยู่ในช่วงที่มีค่าต่ำหลายล้านตัวให้ลำดับความสำคัญ)

ในระหว่างรอบกระแสไฟฟ้าไหลผ่านชิปเปิด / ปิดทรานซิสเตอร์ผลลัพธ์ที่จะเปิด / ปิดทรานซิสเตอร์มากขึ้นและอื่น ๆ ลงมาตามสาย ขณะที่สิ่งนี้เกิดขึ้นบางส่วนของชิปมีค่า "ผิด" - คุณสามารถคิดว่านี่เป็นครึ่งทางผ่านการคำนวณ (คุณได้เพิ่มคอลัมน์หนึ่งคอลัมน์และคอลัมน์ 10s และกำลังจะเริ่ม คอลัมน์ 100s) คุณไม่ต้องการให้สิ่งนี้ส่งผลกระทบต่อโลกภายนอกดังนั้น (เช่น) ขาออกของคุณจะถูกยึดไว้ - ยึดตามค่าใด ๆ ก็ตาม - จนกว่าคำสั่งจะเสร็จสิ้น ใช้เวลานานแค่ไหนในการเรียนการสอนที่แตกต่างกัน แต่ผู้ผลิตจะทำตามคำสั่งที่ช้าที่สุดในสถานการณ์ที่เลวร้ายที่สุด

สำหรับ AtMega (ซึ่งเป็นชิปบน Arduino) Atmel (ผู้ออกแบบชิป) ได้ประกาศว่านี่คือ 1 / 20,000,000 ของวินาที - นี่คือ 20MHz

โปรดทราบว่าไม่ใช่ไมโครโปรเซสเซอร์ทุกตัวที่รันคำสั่งทั้งหมดที่ 1 คำสั่งต่อรอบ - บางคำสั่งอาจใช้เวลา 1 หรือ 2 หรือ 10 รอบ การวางท่อทำให้สิ่งต่าง ๆ มีความซับซ้อนมากขึ้น - โปรเซสเซอร์อาจทำงานบางอย่าง (เช่นดึงคำสั่งถัดไป) ในรอบเดียวเรียกใช้งานในรอบต่อไป - แต่ในขณะที่มันกำลังประมวลผลคำสั่ง 1 มันสามารถดึงคำสั่งต่อไปได้ ในการทำเช่นนี้อาจจำเป็นต้องเดาว่าคำสั่งใดจะมาถึงถัดไป (ในกรณีของรหัสเครื่องที่เทียบเท่ากับ "goto" - เช่นนี้ใช้สำหรับลูป) และหากเดาผิดจะต้องจัดการกับ ที่; ทิ้งคำสั่งที่ดึงมาและดึงอันถัดไปออกไปเสียรอบ

หน้า Wikipedia เกี่ยวกับpipelining คำสั่งแสดงตัวอย่างของ pipelining RISC chip ใน 5 ขั้นตอน - การดึงคำสั่ง, คำสั่งถอดรหัส, รัน, การเข้าถึงหน่วยความจำและการเขียนกลับ ดังนั้นคุณสามารถมี 5 คำแนะนำในบางขั้นตอนของการดำเนินการที่ทับซ้อนกัน จนกว่าจะถึงช่วง "writeback" คำแนะนำจะไม่มีผลกระทบที่แท้จริง คุณคิดว่านี่เป็นสายการประกอบ - ใช้เวลา 7 นาทีในการรวบรวมวิดเจ็ตเข้าด้วยกัน แต่สามารถแบ่งออกเป็น 5 ขั้นตอนขั้นตอนที่ยาวที่สุดใช้เวลา 2 นาที ทุกๆสองนาทีวิดเจ็ตที่สมบูรณ์บางส่วนจะถูกย้ายโดยแอสเซมบลีไลน์ไปยังสถานีถัดไป คุณได้รับหนึ่งวิดเจ็ตออกมาทุก ๆ สองนาที - "นาฬิกา" สามารถทำเครื่องหมายได้อย่างรวดเร็วเท่ากับขั้นตอนที่ช้าที่สุด หากคุณผลักดันวิดเจ็ตให้เร็วขึ้น "คอขวด" จะได้รับวิดเจ็ตมากขึ้นเรื่อย ๆ


AVR มีท่อส่งน้ำตื้นมาก: ดึงและเรียกใช้เท่านั้น จากนั้นการกระโดดแบบมีเงื่อนไขจะใช้เวลาหนึ่งรอบ (ไม่กระโดด) หรือสองรอบ (กระโดดแล้ว)
Edgar Bonet

ภาวะแทรกซ้อนเพิ่มเติม: แคชหายไป
Martín-Blas Pérez Pinilla

มีหลายสิ่งที่ฉันไม่ได้พูดถึง: แคช (ชนิดใดก็ได้), แบบมัลติเธรด, แบบมัลติคอร์ ... ฉันอาจเข้าไปในส่วนลึกมากเกินไปในโพสต์ของฉันแล้ว
AMADANON Inc.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.