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

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Raspberry Pi Thiên Lý Nhãn (Phần 2): Nhận diện khuôn mặt với OpenCV

Bài này tui sẽ hướng dẫn các bạn dùng OpenCV khai thác sức mạnh tính toán của Raspberry Pi, cụ thể là trong việc nhận dạng khuôn mặt.

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

Arduino hậu tiền chế: Một số Apps/Shield phục vụ cho Internet của Vạn Vật (IW) hướng đến người sử dụng

Trong bài Arduino hậu tiền chế trước (http://arduino.vn/bai-viet/1086-arduino-hau-tien-che-lam-xong-code-roi-t...) tui đã phân tích tầm quan trọng của việc hướng đến người sử dụng. Bài này tui sẽ giới thiệu 1 số apps/shield khá hay làm cho việc sử dụng Arduino/Raspberry Pi gần gũi với người sử dụng hơn.

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