| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- #ifndef MT_SPOWER_CPU_H
- #define MT_SPOWER_CPU_H
- #define VSIZE 10
- #define TSIZE 20
- #define MAX_TABLE_SIZE 3
- #define CPU_TABLE_0 \
- /* "(WAT 8.62%) Leakage Power" */ \
- {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
- 25, 14, 17, 21, 26, 33, 41, 51, 65, 81, 102,\
- 30, 16, 20, 24, 30, 38, 47, 59, 73, 92, 115,\
- 35, 18, 22, 28, 35, 43, 53, 67, 83, 104, 130,\
- 40, 21, 26, 32, 40, 49, 61, 76, 94, 118, 146,\
- 45, 24, 29, 36, 45, 56, 69, 86, 107, 132, 165,\
- 50, 27, 34, 42, 51, 64, 79, 97, 120, 149, 185,\
- 55, 31, 39, 47, 58, 72, 89, 110, 136, 168, 208,\
- 60, 36, 44, 54, 66, 82, 101, 124, 153, 189, 233,\
- 65, 41, 50, 61, 75, 93, 114, 140, 172, 212, 262,\
- 70, 47, 57, 70, 85, 105, 128, 157, 193, 238, 293,\
- 75, 53, 65, 79, 97, 118, 144, 177, 217, 266, 327,\
- 80, 60, 74, 90, 109, 133, 163, 199, 243, 297, 364,\
- 85, 69, 83, 101, 123, 150, 183, 223, 272, 332, 406,\
- 90, 78, 94, 114, 139, 168, 205, 249, 303, 370, 452,\
- 95, 88, 107, 129, 156, 189, 229, 278, 339, 413, 502,\
- 100, 99, 120, 145, 175, 212, 257, 311, 378, 459, 558,\
- 105, 112, 135, 163, 197, 237, 287, 347, 420, 510, 619,\
- 110, 126, 152, 183, 220, 266, 320, 386, 467, 565, 684,\
- 115, 142, 171, 205, 247, 297, 357, 430, 517, 624, 755,\
- 120, 160, 192, 230, 276, 330, 397, 476, 572, 690, 833},
- #define CPU_TABLE_1 \
- /* "(WAT 1.72%) Leakage Power" */ \
- {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
- 25, 8, 10, 13, 16, 20, 25, 31, 39, 49, 62,\
- 30, 10, 12, 15, 18, 23, 29, 36, 45, 56, 71,\
- 35, 11, 14, 17, 21, 26, 33, 41, 51, 64, 80,\
- 40, 13, 16, 20, 24, 30, 37, 47, 58, 72, 90,\
- 45, 15, 18, 23, 28, 35, 43, 53, 66, 82, 102,\
- 50, 17, 21, 26, 32, 39, 49, 60, 74, 92, 115,\
- 55, 20, 24, 30, 36, 45, 55, 68, 84, 104, 129,\
- 60, 22, 27, 34, 41, 51, 62, 77, 95, 117, 145,\
- 65, 26, 31, 38, 47, 57, 70, 86, 106, 131, 162,\
- 70, 29, 36, 43, 53, 65, 79, 97, 119, 147, 181,\
- 75, 33, 40, 49, 60, 73, 89, 109, 134, 164, 201,\
- 80, 38, 46, 56, 68, 82, 100, 122, 149, 182, 224,\
- 85, 43, 52, 63, 76, 92, 112, 136, 166, 203, 248,\
- 90, 48, 58, 70, 85, 103, 125, 152, 185, 225, 274,\
- 95, 54, 66, 79, 95, 115, 139, 169, 205, 249, 303,\
- 100, 61, 74, 89, 107, 128, 155, 187, 226, 275, 333,\
- 105, 69, 83, 99, 119, 143, 172, 207, 249, 302, 365,\
- 110, 77, 93, 111, 133, 159, 190, 229, 275, 331, 400,\
- 115, 86, 103, 123, 147, 176, 210, 252, 302, 363, 438,\
- 120, 97, 115, 137, 163, 194, 232, 277, 331, 398, 477},
- #define CPU_TABLE_2 \
- /*"(WAT -11.35%) Leakage Power" */ \
- {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
- 25, 4, 4, 5, 7, 8, 10, 13, 16, 21, 26,\
- 30, 4, 5, 6, 8, 9, 12, 15, 18, 23, 29,\
- 35, 5, 6, 7, 9, 11, 13, 17, 21, 26, 33,\
- 40, 5, 6, 8, 10, 12, 15, 19, 23, 29, 36,\
- 45, 6, 7, 9, 11, 14, 17, 21, 26, 33, 41,\
- 50, 7, 9, 10, 13, 16, 19, 24, 29, 37, 46,\
- 55, 8, 10, 12, 14, 18, 22, 27, 33, 41, 51,\
- 60, 9, 11, 14, 17, 20, 25, 30, 37, 46, 57,\
- 65, 11, 13, 16, 19, 23, 28, 34, 42, 52, 63,\
- 70, 12, 15, 18, 21, 26, 32, 39, 47, 58, 71,\
- 75, 14, 17, 20, 24, 30, 36, 44, 53, 65, 79,\
- 80, 16, 19, 23, 28, 34, 41, 49, 60, 72, 89,\
- 85, 19, 22, 27, 32, 38, 46, 55, 67, 81, 99,\
- 90, 22, 26, 31, 36, 44, 52, 63, 76, 92, 111,\
- 95, 25, 30, 35, 42, 50, 59, 71, 86, 103, 125,\
- 100, 29, 34, 40, 48, 57, 67, 81, 97, 116, 141,\
- 105, 33, 39, 46, 55, 64, 77, 91, 109, 131, 158,\
- 110, 38, 45, 53, 62, 73, 87, 103, 123, 147, 176,\
- 115, 44, 52, 61, 71, 84, 99, 117, 139, 165, 198,\
- 120, 51, 60, 70, 82, 96, 113, 133, 157, 186, 222},
- #define LTE_TABLE_0 \
- /* "(WAT 11.57%) Leakage Power" */ \
- {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
- 25, 8, 9, 12, 14, 18, 22, 27, 33, 41, 52,\
- 30, 9, 11, 14, 17, 20, 25, 31, 38, 48, 59,\
- 35, 11, 13, 16, 19, 24, 29, 36, 44, 55, 68,\
- 40, 13, 15, 18, 23, 28, 34, 42, 51, 63, 78,\
- 45, 15, 18, 22, 26, 32, 39, 48, 59, 73, 90,\
- 50, 17, 21, 26, 31, 38, 46, 56, 68, 84, 103,\
- 55, 21, 25, 30, 36, 44, 53, 65, 79, 97, 119,\
- 60, 24, 29, 35, 42, 51, 62, 75, 91, 112, 137,\
- 65, 29, 34, 41, 50, 60, 72, 87, 106, 129, 157,\
- 70, 34, 40, 48, 58, 70, 84, 101, 122, 148, 180,\
- 75, 40, 48, 57, 68, 81, 98, 117, 142, 171, 207,\
- 80, 47, 56, 67, 80, 95, 114, 136, 164, 197, 238,\
- 85, 56, 66, 78, 93, 111, 133, 158, 189, 227, 274,\
- 90, 66, 78, 92, 109, 130, 154, 184, 219, 262, 315,\
- 95, 78, 92, 108, 128, 152, 180, 213, 254, 303, 362,\
- 100, 92, 108, 127, 150, 177, 209, 247, 294, 351, 417,\
- 105, 110, 128, 150, 176, 206, 244, 288, 341, 405, 483,\
- 110, 129, 151, 176, 206, 241, 284, 335, 395, 469, 557,\
- 115, 153, 178, 207, 242, 283, 331, 389, 458, 541, 641,\
- 120, 182, 211, 245, 284, 331, 386, 452, 531, 625, 738},
- #define LTE_TABLE_1 \
- /* "(WAT 0.78%) Leakage Power" */ \
- {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
- 25, 5, 6, 7, 9, 12, 15, 18, 23, 29, 37,\
- 30, 6, 7, 9, 11, 13, 16, 21, 26, 33, 42,\
- 35, 7, 8, 10, 12, 15, 19, 23, 29, 37, 47,\
- 40, 8, 9, 11, 14, 17, 22, 27, 33, 42, 53,\
- 45, 9, 11, 13, 16, 20, 25, 31, 38, 47, 59,\
- 50, 10, 13, 15, 19, 23, 28, 35, 43, 54, 67,\
- 55, 12, 15, 18, 22, 27, 33, 40, 50, 61, 76,\
- 60, 15, 18, 21, 26, 31, 38, 46, 57, 70, 86,\
- 65, 17, 21, 25, 30, 36, 44, 53, 65, 80, 98,\
- 70, 20, 24, 29, 35, 42, 51, 62, 75, 91, 112,\
- 75, 24, 29, 34, 41, 49, 59, 71, 87, 105, 128,\
- 80, 29, 34, 41, 49, 58, 69, 83, 100, 121, 147,\
- 85, 35, 41, 48, 57, 68, 81, 97, 116, 140, 169,\
- 90, 42, 49, 57, 68, 80, 95, 113, 135, 162, 196,\
- 95, 50, 58, 68, 80, 95, 112, 133, 158, 188, 226,\
- 100, 61, 70, 82, 96, 113, 132, 156, 185, 220, 263,\
- 105, 73, 84, 98, 114, 133, 157, 184, 217, 258, 306,\
- 110, 88, 102, 117, 137, 159, 185, 217, 255, 301, 356,\
- 115, 108, 124, 142, 164, 190, 221, 258, 301, 353, 418,\
- 120, 131, 149, 171, 197, 228, 263, 306, 356, 416, 488},
- #define LTE_TABLE_2 \
- /* "(WAT -8.16%) Leakage Power" */ \
- {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
- 25, 3, 4, 5, 6, 8, 10, 13, 17, 22, 30,\
- 30, 3, 4, 5, 7, 8, 11, 14, 18, 24, 32,\
- 35, 4, 5, 6, 7, 9, 12, 15, 20, 26, 34,\
- 40, 4, 5, 7, 8, 10, 13, 17, 22, 28, 37,\
- 45, 5, 6, 7, 9, 12, 15, 19, 24, 31, 40,\
- 50, 6, 7, 8, 11, 13, 17, 21, 26, 34, 43,\
- 55, 6, 8, 10, 12, 15, 19, 23, 29, 37, 48,\
- 60, 8, 9, 11, 14, 17, 21, 26, 33, 41, 53,\
- 65, 9, 11, 13, 16, 19, 24, 29, 37, 46, 58,\
- 70, 10, 13, 15, 18, 22, 27, 34, 41, 52, 65,\
- 75, 12, 15, 18, 21, 26, 32, 38, 47, 58, 73,\
- 80, 15, 17, 21, 25, 30, 36, 44, 54, 66, 82,\
- 85, 18, 21, 25, 29, 35, 42, 51, 62, 76, 94,\
- 90, 21, 25, 29, 35, 41, 49, 59, 72, 88, 107,\
- 95, 26, 30, 36, 42, 49, 58, 70, 84, 101, 123,\
- 100, 32, 37, 43, 50, 58, 69, 82, 98, 118, 143,\
- 105, 39, 45, 52, 60, 70, 83, 97, 115, 138, 166,\
- 110, 48, 55, 63, 73, 84, 99, 116, 136, 162, 193,\
- 115, 60, 68, 78, 89, 102, 118, 138, 162, 192, 227,\
- 120, 75, 84, 96, 109, 124, 142, 165, 193, 228, 268},
- #define VCORE_TABLE_0 \
- /* "(WAT 11.57%) Leakage Power" */ \
- {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
- 25, 8, 10, 12, 15, 18, 22, 28, 34, 42, 53,\
- 30, 9, 11, 14, 17, 21, 26, 32, 39, 48, 60,\
- 35, 11, 13, 16, 20, 24, 30, 36, 45, 55, 69,\
- 40, 13, 16, 19, 23, 28, 34, 42, 51, 63, 78,\
- 45, 15, 18, 22, 27, 32, 39, 48, 59, 72, 89,\
- 50, 18, 21, 26, 31, 37, 45, 55, 68, 83, 102,\
- 55, 21, 25, 30, 36, 43, 52, 64, 78, 95, 116,\
- 60, 24, 29, 35, 42, 50, 60, 73, 89, 109, 133,\
- 65, 28, 34, 40, 48, 58, 70, 84, 102, 124, 152,\
- 70, 33, 39, 47, 56, 67, 81, 97, 118, 142, 173,\
- 75, 38, 46, 54, 65, 78, 93, 112, 135, 163, 198,\
- 80, 45, 53, 63, 75, 90, 107, 129, 154, 186, 225,\
- 85, 52, 62, 73, 87, 104, 123, 148, 177, 213, 257,\
- 90, 61, 72, 85, 101, 120, 142, 169, 203, 243, 293,\
- 95, 72, 84, 99, 117, 138, 164, 195, 232, 278, 335,\
- 100, 84, 98, 115, 135, 160, 189, 224, 266, 318, 382,\
- 105, 98, 114, 134, 156, 184, 218, 257, 305, 363, 434,\
- 110, 114, 133, 155, 182, 213, 250, 295, 350, 415, 494,\
- 115, 133, 155, 180, 211, 246, 288, 339, 401, 474, 564,\
- 120, 155, 180, 210, 244, 284, 332, 389, 459, 542, 642},
- #define VCORE_TABLE_1 \
- /* "(WAT 0.78%) Leakage Power" */ \
- {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
- 25, 5, 6, 8, 10, 12, 15, 19, 23, 30, 38,\
- 30, 6, 7, 9, 11, 14, 17, 21, 27, 33, 42,\
- 35, 7, 9, 10, 13, 16, 19, 24, 30, 38, 48,\
- 40, 8, 10, 12, 15, 18, 22, 28, 34, 43, 54,\
- 45, 10, 12, 14, 17, 21, 25, 31, 39, 48, 60,\
- 50, 11, 13, 16, 20, 24, 29, 36, 44, 55, 68,\
- 55, 13, 16, 19, 23, 27, 34, 41, 50, 62, 77,\
- 60, 15, 18, 22, 26, 32, 38, 47, 58, 71, 87,\
- 65, 18, 21, 25, 30, 37, 44, 54, 66, 80, 99,\
- 70, 21, 25, 30, 35, 42, 51, 62, 75, 91, 112,\
- 75, 25, 29, 34, 41, 49, 59, 71, 86, 104, 127,\
- 80, 29, 34, 40, 48, 57, 68, 81, 98, 119, 145,\
- 85, 34, 40, 47, 55, 66, 78, 94, 112, 136, 165,\
- 90, 40, 47, 55, 65, 76, 90, 108, 129, 156, 188,\
- 95, 47, 55, 64, 75, 88, 104, 124, 148, 178, 214,\
- 100, 56, 65, 75, 88, 103, 121, 143, 170, 204, 245,\
- 105, 65, 76, 88, 102, 119, 140, 165, 196, 234, 280,\
- 110, 77, 89, 103, 120, 139, 163, 192, 227, 270, 321,\
- 115, 92, 105, 121, 141, 163, 191, 223, 263, 310, 368,\
- 120, 109, 125, 143, 165, 191, 222, 259, 303, 357, 421},
- #define VCORE_TABLE_2 \
- /* "(WAT 11.57%) Leakage Power" */ \
- {800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, \
- 25, 3, 4, 5, 6, 7, 9, 12, 15, 20, 27,\
- 30, 3, 4, 5, 6, 8, 10, 13, 17, 22, 29,\
- 35, 4, 5, 6, 7, 9, 11, 14, 18, 24, 31,\
- 40, 4, 5, 6, 8, 10, 13, 16, 20, 26, 34,\
- 45, 5, 6, 7, 9, 11, 14, 18, 22, 29, 37,\
- 50, 6, 7, 8, 10, 13, 16, 20, 25, 32, 41,\
- 55, 7, 8, 10, 12, 14, 18, 22, 28, 35, 45,\
- 60, 8, 9, 11, 13, 16, 20, 25, 31, 39, 49,\
- 65, 9, 11, 13, 15, 19, 23, 28, 35, 43, 54,\
- 70, 11, 12, 15, 18, 21, 26, 32, 39, 49, 61,\
- 75, 12, 15, 17, 20, 24, 30, 36, 44, 55, 68,\
- 80, 15, 17, 20, 24, 28, 34, 41, 50, 62, 77,\
- 85, 18, 20, 24, 28, 33, 40, 47, 58, 71, 87,\
- 90, 21, 24, 28, 33, 38, 46, 55, 66, 81, 99,\
- 95, 25, 29, 33, 38, 45, 54, 64, 77, 93, 113,\
- 100, 30, 34, 39, 46, 53, 63, 74, 89, 107, 129,\
- 105, 36, 41, 47, 55, 63, 74, 87, 103, 123, 148,\
- 110, 44, 50, 57, 65, 75, 87, 102, 120, 143, 171,\
- 115, 54, 60, 68, 78, 89, 103, 120, 140, 165, 198,\
- 120, 66, 73, 82, 93, 106, 122, 142, 164, 194, 229},
- typedef struct spower_raw_s {
- int vsize;
- int tsize;
- int table_size;
- int *table[];
- } spower_raw_t;
- /** table order: ff, tt, ss **/
- int cpu_leakage_data[][VSIZE * TSIZE + VSIZE + TSIZE] = {
- CPU_TABLE_0
- CPU_TABLE_1
- CPU_TABLE_2
- };
- int lte_leakage_data[][VSIZE * TSIZE + VSIZE + TSIZE] = {
- LTE_TABLE_0
- LTE_TABLE_1
- LTE_TABLE_2
- };
- int vcore_leakage_data[][VSIZE * TSIZE + VSIZE + TSIZE] = {
- VCORE_TABLE_0
- VCORE_TABLE_1
- VCORE_TABLE_2
- };
- spower_raw_t cpu_spower_raw = {
- .vsize = VSIZE,
- .tsize = TSIZE,
- .table_size = 3,
- .table = {
- (int *)&cpu_leakage_data[0], (int *)&cpu_leakage_data[1], (int *)&cpu_leakage_data[2]},
- };
- spower_raw_t lte_spower_raw = {
- .vsize = VSIZE,
- .tsize = TSIZE,
- .table_size = 3,
- .table = {
- (int *)<e_leakage_data[0], (int *)<e_leakage_data[1], (int *)<e_leakage_data[2]},
- };
- spower_raw_t vcore_spower_raw = {
- .vsize = VSIZE,
- .tsize = TSIZE,
- .table_size = 3,
- .table = {
- (int *)&vcore_leakage_data[0], (int *)&vcore_leakage_data[1],
- (int *)&vcore_leakage_data[2]},
- };
- typedef struct voltage_row_s {
- int mV[VSIZE];
- } vrow_t;
- typedef struct temperature_row_s {
- int deg;
- int mA[VSIZE];
- } trow_t;
- typedef struct sptab_s {
- int vsize;
- int tsize;
- int *data; /* array[VSIZE + TSIZE + (VSIZE*TSIZE)]; */
- vrow_t *vrow; /* pointer to voltage row of data */
- trow_t *trow; /* pointer to temperature row of data */
- } sptbl_t;
- #define trow(tab, ti) ((tab)->trow[ti])
- #define mA(tab, vi, ti) ((tab)->trow[ti].mA[vi])
- #define mV(tab, vi) ((tab)->vrow[0].mV[vi])
- #define deg(tab, ti) ((tab)->trow[ti].deg)
- #define vsize(tab) ((tab)->vsize)
- #define tsize(tab) ((tab)->tsize)
- #define tab_validate(tab) (!!(tab) && (tab)->data != NULL)
- static inline void spower_tab_construct(sptbl_t(*tab)[], spower_raw_t *raw)
- {
- int i;
- sptbl_t *ptab = (sptbl_t *) tab;
- for (i = 0; i < raw->table_size; i++) {
- ptab->vsize = raw->vsize;
- ptab->tsize = raw->tsize;
- ptab->data = raw->table[i];
- ptab->vrow = (vrow_t *) ptab->data;
- ptab->trow = (trow_t *) (ptab->data + ptab->vsize);
- ptab++;
- }
- }
- #endif
|