2008-02-28 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * kernel/ppe/BufferManager.cpp: remove_taskQueue_all() taskQueue �� create �� free ������ä�̵���ơ� queue ����ʤ��ʤ� -> extend_pool -> ��ʤ�(ry �äƤΤ��֤��ƥ���Ū�ʥ������ơ������ե���Ȥ��Ф� �ʤ�Ǥ��ʤȻפä��顢task->wait_me ��õ�Ƥʤ��ä��� task->wait_i �� notify(ry �Ǻ������������ɡ� task->wait_me �ϡ�notify(ry ���Ϥ�����ۤä��餫�����ä��� �äƤ��Ȥǡ�wait_me �����ä�����ؿ�����ޤ����Ȥ��� ������®�٤��������������롣���͡� 2008-02-17 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * Todo: Ǻ��Ǥ�� * fix: kernel/ppe/HTask.cpp ���ޤǡ�manager->create_task ������������������ - dependency ������ manager->set_task_depend(master, slave) // slave �� master ���Ԥ� - �¹ԥ��塼�ؤ��ɲ� manager->spawn_task(master); manager->spawn_task(slave); �ȡ�manager ��𤷤Ƥ�äƤ��ޤ����� �ޤ�����Ǥ⤤��������ɡ��ä� dependency �ν�� �ɤä����ɤä����ԤĤΤ��äƤΤϡ�API�����������狼��ʤ��� �����ǡ�Task (HTask �Τ���) �ˡ�����Ĥ��б�����褦�� void set_depend(HTaskPtr) �� void spawn(void) ���ɲä��ޤ����� - Usage slave->set_depend(master); // slave �� master ���Ԥ� slave->spawn(); // slave �塼���ɲ� ��ɤϡ����줾��δؿ�����Ǥϡ���� set_task_depend �Ȥ��� �Ƥ�Ǥ������ɡ��桼��¦���餹��Ȥ��������狼��䤹���Ȼפ��ޤ��� 2008-02-16 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * tag: beta3 ���֥�Хåե�����ɲä����ޤ��ʤ�Ȥ�ư���Ƥ��ʤ����ä� �Ȥ����ޤǤǤ��������� Fifo �С������ʤΤǡ� �������� Cell ��夲�ơ�����ˤ�����ư���Ƥ뤫�Τ���ʤ��Ȥ� * add: kernel/ppe/DmaBuffer.cpp ���֥�Хåե�����Ѥ˺�ä�������ɡ� ���ä����ʤΤǡ�DMA �ϡ����Υ��֥�������(��������Ĥ��ΰ�)�Ǥ��� �Ԥ��ʤ��褦�ˤ��롣�äƤΤǤɤ��Ǥ��礦���ä��ä������Ȥ��ޤ����� ����������������֥�Хåե�����ǥե��Ǥ����Ǥ��礦�� �Ȥ��������������ʤ���� swap_buffer �Ȥ����ʤ���Ф�k�� -Usage DmaBuffer *buffer = manager->allocate(sizeof(SceneGraphPack)); ���ޤǤȰ㤤��create_task �� in_addr �� out_addr �ˤ� DmaBuffer ��Ƥ����������桼������ʬ�� malloc/new ������Ĥ� ���顼��Ф��褦�ˤ��Ƥ�(seg fault�����ɤ͡�) �����������������ºݤ˻ȤäƤ��ͻҤ� Test/simple_render �� viewer.cpp �ǻȤäƤޤ���sgp_buff �� pp_buff �äƤ�Ĥ͡� �⤦�������桼����ͥ����API���ꤿ�������� 2008-02-11 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * add: Test/simple_render chiaki �� DataPack ��Ȥä� Cube ��ɽ���ץ�����ࡣ ��ñ�� DataPack �� TaskManager �� scheduler (SpeManager) ���Ϥ��� �������ƥ��ԡ����ơ����֤��Ƥ�����ʤ������ �ޤ�ư���Ƥ뵤������ΤǤ�����ʤ��Ǥ��礦���� 2008-02-10 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * tag: beta1 ���ξ������ȡ��Ǥ��뤳�Ȥ���Ǥ��ʤ����Ȥ�٤����㤦���� - task (��) ��� task (��) ���������뤳�ȤϤǤ��ʤ� ���Τˤϡ������ϤǤ���פ����ɡ����� ��task �� ��task �˰�¸���Ƥ����̤� task ��̵�뤷��ư���Τ� �����Ȥ�����̤ˤʤ�ʤ��ȡ� 8���� Todo �ˤ�Ƥ��뤱�ɡ����μ����Ǥ� task �� task ���������뤳�Ȥ����ꤷ�Ƥʤ������ʤΤǡ� ������ spe �ѤˤΤ�������ʤä������Ǥ��ä� OS �äƸ����ʤ������Ǥ��뤫�餷�ơ���ľ���Ρ� ���Ƥδؿ��� task ���褦�Ȥ���Ȥ����ʤ����ǡ� ������ʬ�������äƤΤϤޤ��Ǥ������������ɡ������� - chiaki �� simple_render ��ư���ʤ� (�ɵ�) ��褷�ޤ��� ñ�� read/write buffer �Υ���������ʤ��������ä������ۥ�www �ޤ�����ΰ٤β��ϻĤ��Ƥ����� �ޤ� cvs �� commit ���Ƥʤ����ɡ�chiaki ������ DataPack �б��� simple_render �� TasKManager ���Ȥ߹���Ǥߤ��� �Ȥ��äƤ⡢OS�äݤ�����ʤ������� update_sgp �� create_pp ������ task �����Ƥߤ��� �Ǥޤ�ư���Ƥ�褦�ʵ��Ϥ��뤱�ɡ���Τ��ä��� malloc �Ϥ� warning ���� ����Ĺ��ư����ͤߤ����ʴ����ˤʤäƤ��ޤäƤ��롣 TaskManager �������Τ���simple_render �������Τ��� ���� TaskManager��������ʬ�Ǥ� malloc �Ϥ�������Ҵ����ʤ��� �ޤ������Ǥʤ��ä���Х���õ���褦��̵�������ɤ��ä��㡼�ɤ�������� 2008-02-08 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * add: kernel/ppe/SymTable.cpp ���ޤ� func[] = {add, sum, ...} �Ȥ���äƤ��ä���뤤�����ޤ��äƤ��Τ� �ä��礤���̤� Symbol Table �ߤ����ʤ�Τ��뤳�Ȥ� // ���������ɤ� struct sym_table { char *sym; // ����ܥ� void *address; // ����ܥ뤬�������ɥ쥹 } sym_table[] = {{"Sum", &Sum} , {"Draw", &draw}}; int fd = get_fd("Sum"); void *addr = get_address(fd); table �ˤ� "Sum" �� "Draw" �äƤ�����ĤΥ���ܥ뤬��Ͽ����Ƥ��롣 �㤨�С��桼��(�����ͥ롩)�� "Sum" �äƥ���ܥ�˥���������������硢 �ޤ��� get_fd �� "Sum" ���Ф��롢file descripter ���֤��� �桼���ϡ����� fd �˽��ä� get_address ��������뤳�Ȥ�����롣 TaskManager Ū�ʻȤ�����ʤ� // ���Ϻ���Draw �ؿ���Ȥ������������������� int fd = manager->open("Draw"); manager->create_task(fd, size, in, out, func); manager->open �Ǥ� get_fd ��Ʊ���Ȥ����Ǥ��� �ޤ����ɤ�;�Ϥ��ꤽ���Ǥ���������ư���Ƥ�äƤ��Ȥǡ� - �� �ʤ� file descripter ��ɽ���� OS �κ����Ȥ��ơ� fopen���Ȥ���Ʊ���Ȥ�����Ǥ��뤸��ʤ��� * Todo: task �� task ����������ݤν��� ���ޤǡ� task ���Ԥ���Ȥϡ��黻�Τߤ�Ԥ��褦�� ñ��ʼ����˷���Ǥ�����Ƥ���櫓�Ǥ��� ��������OS �ʤ��ȡ��������椫���̤Υ���������������Ȥ� ���ꤢ����Ȼפ��롣�Ƥ����Υƥ��ȥץ������Ǥʤä��� Test/Sum �ˤ���ץ������ǻȤ��륿���� - init2 // �����̾���Ǥ��ޤʤ� �黻������ͤȤ��Хåե��ν���� - sum1 �����ϰϤ����� (i ���� i+16 �Ȥ�) ������ - sum2 sum1 �ǵ���줿��ʣ�����ϰϤ����¤��ĤˤޤȤ�� (ex. ʣ���� sum1 �� 1->16, 17->32, 33->48 �����¤������ sum2 �� ���3�Ĥ����¤������ �פ� 1->48 �����¤�ʬ�䤹��äƤ����ץ������� - finish sum2 �ǵ�ޤä��ͤ�ɽ�� ���� Sum �Ȥ����ץ�����ࡢ�Ȥ����� OS �ȸ�������SumOS �͡� SumOS �Ϻǽ�� TaskManager (��� kernel) ��ư���� init ��ư���롣init �Ǥϡ�ͽ�����줿�������Ǥ��� init2 �� finish ����ĤΥ������� create ������Ͽ���롣 init2 �� finish �ˤϰ�¸�ط������� (init2 ������ä��� finish) init2 ����ǡ�sum1 �� sum2 �Ȥ���������������롣 sum1 �� sum2 �ˤ��¸�ط��Ϥ��� (sum1 ������ä��� sum2) ���μ������ȡ�����������λ���ƽ��Ƽ��Υ������عԤ��� �ޤ����������ʤ�����ɡ��㤨�Ф��Υ���������� �����˥����������줿��硢���Υ���������λ����ޤǤ� �¹Ԥ���ʤ��ʤäƤ��ޤ��� �Ǥޤ������ϡ�manager->create_task ������٤� manager->run �Ȥ����ơ�̵����굯ư���Ƥ������� ����̵���������äƤ����ȡ�scheduler �����ܤƤ��� SpeManager (�����̾���Ѥ��ʤ���) ��2�ٸƤӽФ��Ƥ����� �Ĥޤꡢ��������ǥ����������٤ˡ�SpeManager ���֥������Ȥ� new ���Ƥ�櫓���������Τ������䡢ư���Ƥ뤱�ɤ͡� ���ʤߤˡ�Cell version ���� spe ������˼�äƤ��äƤ���뤫�� ����פ��ʤȻפ��Ĥġ��⤷ spe ��1�Ĥ����Ȥ�ʤ�������ä�����̯�� �פ���ˡ���������ǥ��������������ν�����ͤ��ʤ��Ȥ͡� 2008-02-07 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * memo: �ץ�����ߥλ��� scheduler �Ȥ���task �δ�������ʬ�� kernel programing �ΤĤ��ǡ� example �Ȥ���task �˳�����Ƥ��������ꤹ����ʬ�� user programing �ΤĤ��ǡ� ���줾���ä������Ǹ���ɬ�פ����� * memo: OS �Ȥ������ OS ��ư��ή�� - PC ���Ÿ�������� - BIOS ��Ω���夬�� (OpenFirmWare, EFI, BIOS) - ��ư�ǥХ���������å� (ͥ���٤Ȥ�����Ȥ�) - ��ư�ǥХ������� Boot loader ��ư + BIOS �ˤ�äơ�ǧ���Ǥ���ե����륷���ƥब�㤦(���ä���) + �ե����륷���ƥ�Τɤ��� Boot Loader �����뤫�ΤäƤ��� + grub, grub2, lilo, kboot �ʤɤ����� - Boot Loader �� kernel ��ư + �ͥåȥ���֡��Ȥξ�硢TCP/IP �� �ͥåȥ���ǥХ���(�������Ȥ���)�Υɥ饤�Ф���äƤ�ɬ�פ����� - kernel �ϡ��ǽ�� scheduler ��ư���� - scheduler �ν���� (init ��Ƥ֡�) - init �Ǥϡ������������ꤵ��Ƥ��륹����ץȤȤ���Ƥ� + linux �Ȥ����� /etc/rc �ˤ����Ĥ� init ���Ƥ� - login form ����ư �� ���ä���桼�� - login ���� - shell ��Ƥ� + login shell ���ɤ����Τ���� - �桼�������ꤵ��Ƥ뵯ư������ץȡ���¹� - ����ƥ������� 2008-02-06 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * kernel/spe/*.cpp: new �� placement new ���ߡ�spe kernel �Υ������ϡ��ڤ��ؤ����� new/delete ���֤��Ƥ��ޤ������Ϥ���Ǥ���������ɡ� ®��Ū�ˤ⡢�������ľ���ʤ��Ȥ����ʤ��Ȼפ��櫓�ǡ� �ǡ�ͽ�� allocate ���줿�ΰ�����Ѥ��� placement new ��Ȥ��� new ���⤽��ʤ����ʤ�äݤ��� ����Ȥ��ơ�Ϳ����줿���ʬ new/delete ���֤��ץ������ȡ� Ʊ�����ʬ��placement new �����Ȥ���®�٤���� for (int i = 0; i < num; i++) { < task = new Task; < task->init(i); < task->printID(); < delete task; --- > task = new(buff) Task; // buff = malloc(BUFF_SIZE); > task->init(id); > task->printID(id); } placement new �Ǥϡ�delete ��ɬ�פ�̵���� ������ǿ����� allocate ���Ƥ�ʤ�ɬ�פ��⤷��ʤ����� ®����Ӥϰʲ���no_new �� placement new �ǡ�ln_new �� new/delete �� % ./a.out 10 // 10 �� no_new: time: 0.012135(msec) ln_new: time: 0.003572(msec) % ./a.out 100 no_new: time: 0.022453(msec) ln_new: time: 0.018989(msec) % ./a.out 1000 no_new: time: 0.115277(msec) ln_new: time: 0.136335(msec) % ./a.out 10000 no_new: time: 1.056156(msec) ln_new: time: 1.322709(msec) % ./a.out 100000 no_new: time: 10.622221(msec) ln_new: time: 13.362414(msec) % ./a.out 1000000 no_new: time: 109.436496(msec) ln_new: time: 136.956872(msec) 10��100 ������餱�Ƥ뤬���ޤ�̵�뤷�褦(�� �����¿���ʤ�ˤĤ�ơ��ۤ�ξ������� no_new �����äƤ롣 �ɤ��ʤ�������͡����ʤߤ� printID ��̵������ % ./a.out 1000000 no_new: time: 0.008512(msec) ln_new: time: 27.100296(msec) I/O �˺����������ޤ�����ʤ����������ɤ���