Cùng học VBLUNO - Phần 2: Tìm hiểu và so sánh khái niệm xung nhịp

Mô tả dự án: 

Tương tự như khi mua máy tính chúng ta thường chú ý đến xung nhịp (GHz) và RAM, việc quan tâm đến xung nhịp của một board mạch cũng là một điều hiển nhiên. Bài này ta cùng thí nghiệm xem xung nhịp và tốc độ xử lí của VBLUNO thế nào nha!

Xung nhịp là gì?

Xung nhịp là tốc độ mà vi xử lý thực hiện các câu lệnh trong 1 giây, thường được biểu diễn với đơn vị là tần suất (Hz). Tần suất càng cao thì các câu lệnh càng được xử lý nhanh chóng. Lấy nghịch đảo của tần suất (1/Hz) các bạn sẽ có được chu kỳ, tức là đơn vị thời gian nhỏ nhất mà vi xử lý có thể thực hiện được trên lý thuyết. Giả sử bạn có một board mạch có tần suất là 10Hz thì board mạch này sẽ xử lý 10 câu lệnh trong vòng 1 giây. Việc này đồng nghĩa với việc bạn không thể bắt board mạch này tạo 1 xung vuông ngắn hơn 0,1 giây (0.09 chẳng hạn) vì 1/0.09 ~ 11 vượt quá xung nhịp 10Hz.

Một điều quan trọng nữa là tốc độ xử lý còn phụ thuộc vào kiến trúc của vi xử lý và mục đích của board mạch. Ví dụ: để làm 1 phép nhân 2 số như 3x4 chẳng hạn, chip Intel 80286 cần đến 5 chu kỳ, trong khi chip đời sau Intel 80486 cần đúng 1 chu kỳ để làm điều này. Bài http://arduino.vn/bai-viet/254-bai-1-gioi-thieu-so-luoc-ve-intel-galileo có 1 phần khá lý thú so sánh xung nhịp giữa Intel và ARM để các bạn tham khảo. 

Thí nghiệm

Chúng ta sẽ so sánh hiệu năng tính toán của VBLUNO với 2 board nhìn tương tự là Arduino UNO và Arduino Zero bằng cách bắt chúng thực hiện 100k phép toán trong thuật toán Newton để tính giá trị của hằng số pi (3.1415...), và nhấp nháy LED mỗi 100 phép tính. 

Tên VBLUNO UNO ZERO
Hình
CHIP ARM Cortex M0 ATmega328P 32-bit ARM Cortex M0+
Xung 16 MHz 16 MHz 48 MHz

Code: (trích từ http://tronixstuff.com/2013/02/08/first-look-arduino-due/)

//
// Pi_2
//
// Steve Curd
// December 2012
//
// This program approximates pi utilizing the Newton's approximation.  It quickly
// converges on the first 5-6 digits of precision, but converges verrrry slowly
// after that.  For example, it takes over a million iterations to get to 7-8
// significant digits.
//
// I wrote this to evaluate the performance difference between the 8-bit Arduino Mega,
// and the 32-bit Arduino Due.
//

#define ITERATIONS 100000L    // number of iterations 
#define FLASH 1000            // blink LED every 1000 iterations

void setup()
{
	pinMode(13, OUTPUT);        // set the LED up to blink every 1000 iterations   Serial.begin(57600); }
}
void loop()
{
	unsigned long start, time;
	unsigned long niter = ITERATIONS;
	int LEDcounter = 0;
	boolean alternate = false;
	unsigned long i, count = 0;
	float x = 1.0;
	float temp, pi = 1.0;

	Serial.print("Beginning ");
	Serial.print(niter);
	Serial.println(" iterations...");
	Serial.println();
	start = millis();
	for ( i = 2; i < niter; i++)
	{
		x *= -1.0;
		pi += x / (2.0f * (float)i - 1.0f);
		if (LEDcounter++ > FLASH)
		{
			LEDcounter = 0;
			if (alternate)
			{
				digitalWrite(13, HIGH);
				alternate = false;
			}
			else
			{
				digitalWrite(13, LOW);
				alternate = true;
			}
			temp = 40000000.0 * pi;
		}
	}
	time = millis() - start;
	pi = pi * 4.0;

	Serial.print("# of trials = ");
	Serial.println(niter);
	Serial.print("Estimate of pi = ");
	Serial.println(pi, 10);
	Serial.print("Time: ");
	Serial.print(time);
	Serial.println(" ms");
	delay(10000);
}

Kết quả và thảo luận

  • Ta thấy UNO và VBLUNO có tốc độ tính toán ngang ngửa nhau (5556 với 5585 giây) mặc dù 1 bên là vi xử lý ARM và bên kia là vi điều khiển Atmel.
  • ZERO nhanh gấp 3 lần VBLUNO (5556/1948 ~ 3) mặc dù cùng họ ARM M0. Điều này có thể suy đoán là do VBLUNO có xung chậm gấp 3 lần ZERO (48/16 = 3).

Như vậy ta có thể kết luận rằng xung nhịp có vai trò quan trọng trong việc xử lý các câu lệnh. Tuy nhiên đây chưa là yếu tố quyết định. Bài tới chúng ta sẽ cùng tìm hiểu sâu hơn về phần cứng và độ tiêu thụ điện năng của VBLUNO.

lên
5 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 
Chuyên mục: 
Các dự án được truyền cảm hứng

Xe điều khiển bằng tay game Dual Shock3 thông qua Bluetooth

Vừa bắt đầu với arduino được hơn 1 tuần, có tham khảo qua các nguồn từ "trung ương đến địa phương", nắm được 1 số kiến thức cơ bản nên mình bắt đầu thực hiện 1 sản phẩm để đúc kết kinh nghiệm. Trong số đó thì xe điều khiển là dễ nhất. Kết hợp với cái tay game ps3 nằm lăn lóc ở góc nhà. Thế là có 1 chiếc xe điều khiển từ xa. Bắt đầu nhé.

lên
17 thành viên đã đánh giá bài viết này hữu ích.

Làm xe điều khiển từ xa bằng Bluetooth - Điều khiển bằng Android với App Inventor

Mình rất thích điện tử nhưng không học về ngành điện tử. Rất may là có Adruino, rồi có cộng đồng Adruino Việt Nam, đặc biệt là sự nhiệt tình của tất cả các bạn trong cộng đồng, mình đã làm được 1 chiếc xe điều khiển từ xa. Cho con chơi là lí do phụ thôi, còn tìm hiểu, học tập là chính. Hôm nay chia sẻ cùng các bạn, cùng gửi lời cảm ơn đến tất cả các bạn trong cộng đồng. Có bạn thì giúp đỡ trực tiếp, có bạn thì viết bài, rồi có bạn thì bình luận, nêu câu hỏi. Tất cả đều có giá trị đối với mình.

Ngại viết bài nên mình đăng dưới dạng ảnh.

lên
26 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

"Đi học thoai": Phần 4 - Cảnh báo cháy với Raspberry Pi và Arduino

Đây là bài biến thể từ "Đi học thoai" phần 1 (cảnh báo cháy với Raspberry Pi và Arduino) và Lồng tiếng cho Raspberry Pi. Nếu bạn đi học không có thời gian check email liên tục thì hệ thống sẽ phát cảnh báo cháy qua loa.

lên
15 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Giới thiệu Arduino Zero

Trong chúng ta không ít người đã nghe qua chuyện máy tính Pizero huyền thoại "giá 2 tô phở". Tuy nhiên ít người biết rằng Pizero có 1 người anh "cùng cha khác ông nội" ra đời trước đó 1 năm rưỡi cũng mang nhãn "Zero". Tuy nhiên, khác với Pizero luôn cháy hàng, Arduino Zero không mang lại nhiều kỳ vọng. Chúng ta cùng phân tích nha!

lên
13 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: