{"id":214,"date":"2024-06-11T14:01:09","date_gmt":"2024-06-11T14:01:09","guid":{"rendered":"https:\/\/biomedbench.epfl.ch\/?page_id=214"},"modified":"2024-08-27T09:23:12","modified_gmt":"2024-08-27T09:23:12","slug":"hw-evaluation","status":"publish","type":"page","link":"https:\/\/biomedbench.epfl.ch\/index.php\/hw-evaluation\/","title":{"rendered":"HW Evaluation"},"content":{"rendered":"\n\n\tBiomedBench enables a systematic HW evaluation and comparison of the state-of-the-art platforms in the wearable domain.<br \/>\n<strong>To achieve a fair comparison, it is necessary to define the experimental setup and measurement process.<\/strong>\n<h2>Experimental Setup<\/h2>\n<h4>Signal acquisition &#8211; Sensor emulation<\/h4>\nWe assume an external ADC with a 768-byte RAM buffer (i.e., AD4130-8). We perform per-batch acquisition by transferring data to the MCU when the buffer is full. We employ an SPI acquisition scheme using the DMA while the core is in sleep mode. Moreover, we assume that the sensors have no processing ability and that all the computations take place\u00a0in the MCU.<br \/>\n<strong>Future platform evaluation must comply with these assumptions for the results to be considered valid.<\/strong>\n<h4>Energy measurements<\/h4>\nWe do not consider the energy of the sensor and ADC in our experiments, as it is common for all platforms. We have measured the energy consumption of all boards at the power supply entry point of the integrated circuit as we target a fair comparison across all platforms. However, we highlight that the reported energy numbers include the energy drawn by the input-to-core step-down voltage converter embodied in the integrated circuit.<br \/>\n<strong>Future platform energy measurements must comply with this procedure for the results to be considered valid*.<\/strong><br \/>\n*Else, thoroughly explain your energy measurement process\nWe have selected the <a href=\"https:\/\/www.qoitech.com\/otii-arc-pro\/\">Otii Arc Pro<\/a> provided by Qoitech, which samples at 4 kHz, to obtain an energy profile over time and extract the energy and execution time per phase. However, due to the limited \u00b110 \u00b5A precision of the Otii device, we used the <a href=\"https:\/\/www.fluke.com\/en-us\/product\/precision-measurement\/bench-instruments\/fluke-8845a-8846a\">Fluke 8846A<\/a> multimeter to measure the average current of the Nucleo and Apollo boards in deep-sleep mode. This device can achieve a precision of 0.03 \u00b5A.<br \/>\n<strong>Please ensure your measuring equipment features a sampling rate in the range of kHz and adequate precision.<\/strong>\n<h4>Processing Cycles<\/h4>\n<p>We measured the processing cycles per application using one of two methods. For the first method, we utilized the built-in HW performance counters when provided by the processor. The alternative, in the absence of HW counters, was to multiply the processing execution time by the processor frequency. This method is accurate, provided that one can measure the execution time with adequate precision.<\/p>\n<h2>Considered Platforms<\/h2>\n<p>Below, we summarize the evaluated platforms and the key experimental specifications for each of them.<\/p>\n<table width=\"808\">\n<thead>\n<tr>\n<th>Board<\/th>\n<th>MCU<\/th>\n<th>Measuring<br \/>\nPoint<\/th>\n<th>Voltage<br \/>\n(V)<\/th>\n<th>FPU<\/th>\n<th>DMA<br \/>\nused<\/th>\n<th>Sleep Mode<br \/>\nused<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Raspberry Pi Pico<\/td>\n<td>RP2040<\/td>\n<td>Board<\/td>\n<td>2.75<\/td>\n<td>No<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Nucleo L4R5<\/td>\n<td>STML4R5ZI<\/td>\n<td>MCU<\/td>\n<td>3.30<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Ambiq Apollo 3<\/td>\n<td>Apollo 3 Blue<\/td>\n<td>MCU<\/td>\n<td>1.80<\/td>\n<td>Yes<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Gapuino<\/td>\n<td>GAP8<\/td>\n<td>MCU<\/td>\n<td>2.80<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<td>No<\/td>\n<\/tr>\n<tr>\n<td>GAP9EVK<\/td>\n<td>GAP9<\/td>\n<td>MCU<\/td>\n<td>2.80<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h2>Results<\/h2>\n<h4>Processing cycles (in millions)<\/h4>\n<table width=\"808\">\n<thead>\n<tr>\n<th>Processor<\/th>\n<th>HeartBeatClass<\/th>\n<th>SeizureDetSVM<\/th>\n<th>SeizureDetCNN<\/th>\n<th>CognWorkMon<\/th>\n<th>GestureClass<\/th>\n<th>CoughDet<\/th>\n<th>EmotionClass<\/th>\n<th>Bio-BPfree<br \/>\n(reduced)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Arm Cortex-M0+<\/td>\n<td>11.6<\/td>\n<td>4.3<\/td>\n<td>283.0<\/td>\n<td>346.0<\/td>\n<td>571.6<\/td>\n<td>149.7<\/td>\n<td>15.3<\/td>\n<td>16758.0<\/td>\n<\/tr>\n<tr>\n<td>Arm Cortex-M4<\/td>\n<td>7.4<\/td>\n<td>2.3<\/td>\n<td>240.0<\/td>\n<td>138.0<\/td>\n<td>23.0<\/td>\n<td>9.9<\/td>\n<td>2.5<\/td>\n<td>662.0<\/td>\n<\/tr>\n<tr>\n<td>CV32E40P GAP8<\/td>\n<td>5.1<\/td>\n<td>3.2<\/td>\n<td>160.0<\/td>\n<td>165.0<\/td>\n<td>635.8<\/td>\n<td>&#8211;<\/td>\n<td>14.3<\/td>\n<td>18450.0<\/td>\n<\/tr>\n<tr>\n<td>CV32E40P GAP9<\/td>\n<td>5.1<\/td>\n<td>2.5<\/td>\n<td>160.0<\/td>\n<td>92.0<\/td>\n<td>20.2<\/td>\n<td>9.1<\/td>\n<td>1.6<\/td>\n<td>633.0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>Energy<\/h4>\n<p>Below, we report the energy numbers per phase and board (1 table per application).<\/p>\n<table width=\"808\">\n<thead>\n<tr>\n<th><strong>HeartBeatClass<\/strong><\/th>\n<\/tr>\n<tr>\n<th>Board\/MCU<\/th>\n<th>Idle (mJ)<\/th>\n<th>Acquisition (mJ)<\/th>\n<th>Processing (mJ)<\/th>\n<th>Total (mJ)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Raspberry Pi Pico<\/td>\n<td>29.647<\/td>\n<td>3.519<\/td>\n<td>6.532<\/td>\n<td>39.698<\/td>\n<\/tr>\n<tr>\n<td>STM32L4R5ZI<\/td>\n<td>0.118<\/td>\n<td>0.002<\/td>\n<td>2.604<\/td>\n<td>2.724<\/td>\n<\/tr>\n<tr>\n<td>Apollo 3 Blue<\/td>\n<td>0.073<\/td>\n<td>0.061<\/td>\n<td>0.226<\/td>\n<td>0.360<\/td>\n<\/tr>\n<tr>\n<td>GAP8<\/td>\n<td>9.386<\/td>\n<td>0.042<\/td>\n<td>0.416<\/td>\n<td>9.844<\/td>\n<\/tr>\n<tr>\n<td>GAP9<\/td>\n<td>9.837<\/td>\n<td>0.054<\/td>\n<td>0.189<\/td>\n<td>10.081<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table width=\"808\">\n<thead>\n<tr>\n<th><strong>SeizureDetSVM<\/strong><\/th>\n<\/tr>\n<tr>\n<th>Board\/MCU<\/th>\n<th>Idle (mJ)<\/th>\n<th>Acquisition (mJ)<\/th>\n<th>Processing (mJ)<\/th>\n<th>Total (mJ)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Raspberry Pi Pico<\/td>\n<td>118.805<\/td>\n<td>2.402<\/td>\n<td>2.42<\/td>\n<td>123.627<\/td>\n<\/tr>\n<tr>\n<td>STM32L4R5ZI<\/td>\n<td>0.476<\/td>\n<td>0.001<\/td>\n<td>1.313<\/td>\n<td>1.790<\/td>\n<\/tr>\n<tr>\n<td>Apollo 3 Blue<\/td>\n<td>0.294<\/td>\n<td>0.042<\/td>\n<td>0.137<\/td>\n<td>0.473<\/td>\n<\/tr>\n<tr>\n<td>GAP8<\/td>\n<td>37.724<\/td>\n<td>0.029<\/td>\n<td>0.376<\/td>\n<td>38.127<\/td>\n<\/tr>\n<tr>\n<td>GAP9<\/td>\n<td>39.5<\/td>\n<td>0.037<\/td>\n<td>0.09<\/td>\n<td>39.628<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table width=\"808\">\n<thead>\n<tr>\n<th><strong>SeizureDetCNN<\/strong><\/th>\n<\/tr>\n<tr>\n<th>Board\/MCU<\/th>\n<th>Idle (mJ)<\/th>\n<th>Acquisition (mJ)<\/th>\n<th>Processing (mJ)<\/th>\n<th>Total (mJ)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Raspberry Pi Pico<\/td>\n<td>3.514<\/td>\n<td>7.528<\/td>\n<td>167.87<\/td>\n<td>178.912<\/td>\n<\/tr>\n<tr>\n<td>STM32L4R5ZI<\/td>\n<td>0.015<\/td>\n<td>0.004<\/td>\n<td>112.049<\/td>\n<td>112.068<\/td>\n<\/tr>\n<tr>\n<td>Apollo 3 Blue<\/td>\n<td>0.010<\/td>\n<td>0.494<\/td>\n<td>18.262<\/td>\n<td>18.766<\/td>\n<\/tr>\n<tr>\n<td>GAP8<\/td>\n<td>0.464<\/td>\n<td>0.090<\/td>\n<td>31.987<\/td>\n<td>32.542<\/td>\n<\/tr>\n<tr>\n<td>GAP9<\/td>\n<td>2.234<\/td>\n<td>0.117<\/td>\n<td>5.101<\/td>\n<td>7.452<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table width=\"808\">\n<thead>\n<tr>\n<th><strong>CognWorkMon<\/strong><\/th>\n<\/tr>\n<tr>\n<th>Board\/MCU<\/th>\n<th>Idle (mJ)<\/th>\n<th>Acquisition (mJ)<\/th>\n<th>Processing (mJ)<\/th>\n<th>Total (mJ)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Raspberry Pi Pico<\/td>\n<td>104.902<\/td>\n<td>35.876<\/td>\n<td>195.910<\/td>\n<td>336.688<\/td>\n<\/tr>\n<tr>\n<td>STM32L4R5ZI<\/td>\n<td>0.432<\/td>\n<td>0.017<\/td>\n<td>70.629<\/td>\n<td>71.078<\/td>\n<\/tr>\n<tr>\n<td>Apollo 3 Blue<\/td>\n<td>0.325<\/td>\n<td>0.620<\/td>\n<td>3.887<\/td>\n<td>4.832<\/td>\n<\/tr>\n<tr>\n<td>GAP8<\/td>\n<td>33.930<\/td>\n<td>0.431<\/td>\n<td>16.008<\/td>\n<td>50.369<\/td>\n<\/tr>\n<tr>\n<td>GAP9<\/td>\n<td>36.303<\/td>\n<td>0.557<\/td>\n<td>3.409<\/td>\n<td>40.291<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table width=\"808\">\n<thead>\n<tr>\n<th><strong>GestureClass<\/strong><\/th>\n<\/tr>\n<tr>\n<th>Board\/MCU<\/th>\n<th>Idle (mJ)<\/th>\n<th>Acquisition (mJ)<\/th>\n<th>Processing (mJ)<\/th>\n<th>Total (mJ)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Raspberry Pi Pico<\/td>\n<td>0<\/td>\n<td>8.008<\/td>\n<td>347.104<\/td>\n<td>355.112<\/td>\n<\/tr>\n<tr>\n<td>STM32L4R5ZI<\/td>\n<td>0<\/td>\n<td>0.004<\/td>\n<td>13.425<\/td>\n<td>13.429<\/td>\n<\/tr>\n<tr>\n<td>Apollo 3 Blue<\/td>\n<td>0<\/td>\n<td>0.525<\/td>\n<td>2.500<\/td>\n<td>3.025<\/td>\n<\/tr>\n<tr>\n<td>GAP8<\/td>\n<td>0<\/td>\n<td>0.096<\/td>\n<td>220.933<\/td>\n<td>221.029<\/td>\n<\/tr>\n<tr>\n<td>GAP9<\/td>\n<td>0.027<\/td>\n<td>0.124<\/td>\n<td>0.604<\/td>\n<td>0.755<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table width=\"808\">\n<thead>\n<tr>\n<th><strong>CoughDet<\/strong><\/th>\n<\/tr>\n<tr>\n<th>Board\/MCU<\/th>\n<th>Idle (mJ)<\/th>\n<th>Acquisition (mJ)<\/th>\n<th>Processing (mJ)<\/th>\n<th>Total (mJ)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Raspberry Pi Pico<\/td>\n<td>0<\/td>\n<td>2.972<\/td>\n<td>87.543<\/td>\n<td>90.515<\/td>\n<\/tr>\n<tr>\n<td>STM32L4R5ZI<\/td>\n<td>0<\/td>\n<td>0.001<\/td>\n<td>6.649<\/td>\n<td>6.652<\/td>\n<\/tr>\n<tr>\n<td>Apollo 3 Blue<\/td>\n<td>0<\/td>\n<td>0.198<\/td>\n<td>0.444<\/td>\n<td>0.642<\/td>\n<\/tr>\n<tr>\n<td>GAP8<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td>GAP9<\/td>\n<td>0.081<\/td>\n<td>0.046<\/td>\n<td>0.352<\/td>\n<td>0.479<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table width=\"808\">\n<thead>\n<tr>\n<th><strong>EmotionClass<\/strong><\/th>\n<\/tr>\n<tr>\n<th>Board\/MCU<\/th>\n<th>Idle (mJ)<\/th>\n<th>Acquisition (mJ)<\/th>\n<th>Processing (mJ)<\/th>\n<th>Total (mJ)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Raspberry Pi Pico<\/td>\n<td>19.651<\/td>\n<td>1.259<\/td>\n<td>8.760<\/td>\n<td>29.670<\/td>\n<\/tr>\n<tr>\n<td>STM32L4R5ZI<\/td>\n<td>0.002<\/td>\n<td>0.001<\/td>\n<td>1.462<\/td>\n<td>1.465<\/td>\n<\/tr>\n<tr>\n<td>Apollo 3 Blue<\/td>\n<td>0.061<\/td>\n<td>0.083<\/td>\n<td>0.110<\/td>\n<td>0.254<\/td>\n<\/tr>\n<tr>\n<td>GAP8<\/td>\n<td>6.224<\/td>\n<td>0.015<\/td>\n<td>1.052<\/td>\n<td>7.291<\/td>\n<\/tr>\n<tr>\n<td>GAP9<\/td>\n<td>6.572<\/td>\n<td>0.019<\/td>\n<td>0.061<\/td>\n<td>6.652<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table width=\"808\">\n<thead>\n<tr>\n<th><strong>Bio-BPfree<br \/>\n(reduced)<\/strong><\/th>\n<\/tr>\n<tr>\n<th>Board\/MCU<\/th>\n<th>Idle (mJ)<\/th>\n<th>Acquisition (mJ)<\/th>\n<th>Processing (mJ)<\/th>\n<th>Total (mJ)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Raspberry Pi Pico<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>9374.500<\/td>\n<td>9374.500<\/td>\n<\/tr>\n<tr>\n<td>STM32L4R5ZI<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>432.227<\/td>\n<td>432.227<\/td>\n<\/tr>\n<tr>\n<td>Apollo 3 Blue<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>32.222<\/td>\n<td>32.222<\/td>\n<\/tr>\n<tr>\n<td>GAP8<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>1453.368<\/td>\n<td>1453.368<\/td>\n<\/tr>\n<tr>\n<td>GAP9<\/td>\n<td>&#8211;<\/td>\n<td>&#8211;<\/td>\n<td>24.970<\/td>\n<td>24.970<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n","protected":false},"excerpt":{"rendered":"<p>BiomedBench enables a systematic HW evaluation and comparison of the state-of-the-art platforms in the wearable domain. To achieve a fair comparison, it is necessary to define the experimental setup and measurement process. Experimental Setup Signal acquisition &#8211; Sensor emulation We assume an external ADC with a 768-byte RAM buffer (i.e., [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inspiro_page_layout":"narrow","inspiro_hide_title":false,"footnotes":""},"class_list":["post-214","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/biomedbench.epfl.ch\/index.php\/wp-json\/wp\/v2\/pages\/214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/biomedbench.epfl.ch\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/biomedbench.epfl.ch\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/biomedbench.epfl.ch\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/biomedbench.epfl.ch\/index.php\/wp-json\/wp\/v2\/comments?post=214"}],"version-history":[{"count":6,"href":"https:\/\/biomedbench.epfl.ch\/index.php\/wp-json\/wp\/v2\/pages\/214\/revisions"}],"predecessor-version":[{"id":330,"href":"https:\/\/biomedbench.epfl.ch\/index.php\/wp-json\/wp\/v2\/pages\/214\/revisions\/330"}],"wp:attachment":[{"href":"https:\/\/biomedbench.epfl.ch\/index.php\/wp-json\/wp\/v2\/media?parent=214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}