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
3 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ả

"Fiat Lux - Hãy có ánh sáng": (Phần 4) Đồng hồ Arduino với neopixel WS2812

3 bài trước các bạn đã làm quen nhấp nháy với module neopixel WS2812 roài hen. Nhưng mà mỗi 1 bóng hoài cũng cũng chán nên lần này chúng ta chơi tới bến ứng dụng 24 bóng luôn nha!

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

Cùng học VBLUNO - Phần 1: Mở hộp và đánh giá

Đây là chuỗi các bài giới thiệu và hướng dẫn cho cộng đồng về các ứng dụng của bo mạch VBLUNO (VNGIoTLab BLE UNO), một sản phẩm tiên phong trong công nghệ Internet của Vạn Vật ở Việt Nam. Bài đầu tiên chúng ta sẽ xem thử ấn tượng ban đầu về bo này ra sao nha!

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