greeting from the president TNT? TNT 1 1 1 TNT TNT clients IP Infusion, Inc. NTT FXC KDDI KDDI history 1990 11 ( ) ( ) 1997 8 ( ) 1998 12 1730 1999 5 9 4423 35 2000 4 2000 4 2000 5 10 7367 331 2001 5 11 7938 718 2002 5 2030 2002 5 12 12078 883 2002 9 ( ) 2003 5 2003 5 13 11393 642 2004 5 2564 2004 5 14 12241 121 2005 5 15 19422 1053 2005 12 4094 2006 5 2006 5 16 23168 1199 2007 5 17 31298 395 2007 7 2008 5 18 33421 675 2008 12 5975
services ( LAN ) ( ) OS ( ) Z Nios II BSD OSSoC BSD/Nios II corporate data 1990 11 22 11 2009 4 ) 5975 5 ( ) ( ) locations
TNT
(TNT) MMU Nios II NetBSD 2009 1 Nios II BSD OS BSD/Nios II FPGA SoC NetBSD OS BSD MMU OS BSD OS FPGA MMU Nios II NetBSD NetBSD Nios II C-to-Hardware C BSD/Nios II Nios II NetBSD OS Nios II SoC Nios II Nios II NetBSD OS Nios II BSD SoC CPU BSD/Nios II FPGA SoC C func_c ( ) { B... func_b... ( ) {... } A... func_a } ( ) {...... } FPGA C CPU Nios II / f A B A B C
SoC FPGA Custom Instruction Nios II/ f with MMU Instruction Data C UART Timer Level Converter DSub CFI Flash SSRAM Performance Counter FlashROM SSRAM Controller C SD SPI Controller w/dma TX-DMA SDcard slot DDR2 SDRAM DDR2 Controller C C Ethernet MAC 10/100/1000 PHY RJ45 Custom Hardware RX-DMA ST MM Master MM Slave BSD/Nios II SoC NetBSD Unix OS Nios II C-to-Hardware C C Nios II Nios II FPGA Nios II FPGA FPGA FPGA HPC OS Linux GPL NetBSD BSD (TNT) TNT
ハード ソフトを 横 断 するレスキューサービス はTNTが 提 供 する 困 ったときのレスキューサービス です はコンピュータの 特 殊 部 隊 TNT において 組 織 されるスペシャルチームが 多 方 面 にわたる 専 門 性 と 豊 富 な 経 験 を 最 大 限 に 活 かして 問 題 解 決 にあたるレスキューサービスです 世 界 でも 類 を 見 ない トラブル 解 決 専 門 チームによる まずは 無 料 見 積 で 問 題 の 困 難 性 を 評 価 してみませんか? 性 能 がどうしても 十 分 上 がらない 突 発 的 なエラーの 再 現 ができない 原 因 不 明 の 不 具 合 が 修 正 できない TNT の が 困 難 な 状 況 を 打 開 します! 事 例 : 限 界 点 までのパフォーマンス 向 上 事 例 : 誤 動 作 機 器 の 解 析 事 例 : ハングアップ 機 器 の 解 析 は 以 下 の 流 れでサービスします (6) までは 無 料 です お 気 軽 にご 相 談 ください (1 ) ご 相 談 ( 右 記 相 談 窓 口 までお 願 いいたします ) (2) 機 密 保 持 契 約 の 締 結 ( 必 要 に 応 じて ) (3) 詳 細 資 料 ご 開 示 不 具 合 実 機 お 貸 出 ( 貸 出 困 難 な 場 合 もご 相 談 ください ) (4) TNT より 概 算 見 積 提 出 (5) 詳 細 お 打 ち 合 せ (6) TNT より 詳 細 見 積 提 出 (7) ご 発 注 (8) TNT 内 にて 解 析 作 業 ( 原 則 として 東 京 京 都 もしくは 福 岡 の TNT 事 務 所 にて 行 います ) (9) 週 1 回 程 度 メールにて 進 捗 報 告 (10) 月 1 回 程 度 ミーティング (1 1) 最 終 報 告 問 題 解 決 など ( 成 果 物 については 見 積 時 にご 相 談 ) 進 捗 報 告 ミーティングなどの 頻 度 についてはご 相 談 に 応 じます 案 件 によっては 全 部 または 一 部 において 成 功 報 酬 の 形 をとることも 可 能 なことがありますのでご 相 談 ください
00001000 21 00 10 11 00 20 00001010 01 00 10 ED B0 76 00001020 C3 66 5C 00 00 AF 00001030 CD 21 D0 10 F0 00 CPU TNT-771 int main(int argc, char **argv) { printf( Hello, World! ); return 0; } CPU TNT-771 int main(int argc, char **argv) { printf( Hello, World! ); return 0; }.LC0:.string Hello, World! main: pushl $.LC0 call printf mov $0, %eax addl $4, %esp ret 00001000 21 00 10 11 00 20 00001010 01 00 10 ED B0 76 00001020 C3 66 5C 00 00 AF 00001030 CD 21 D0 10 F0 00 00001040 00 00 00 00 00
int main(int argc, char **argv) { printf( Hello, World! ); return 0; }
バグ 発 生 を 防 ぐ 高 効 率 コードジェネレータ Generator of memory manager and Database-oriented framework What is GommaDof? 可 読 性 の 高 い 安 全 で 効 率 のよいプログラムコード Why do we need GommaDof? Where does GommaDof work? How does GommaDof work? Address ::= "IPv4" uint8 uint8 uint8 uint8 "IPv6" uint16 uint16 uint16 uint16 uint16 uint16 uint16 uint16; Nodes ::= Address*; Segment ::= "Seg" Address Nodes; -- "Seg" (GW addr) (other nodes)
00EnumTags.h Address.h GCfunc.c Makefile Segment.h 00PrimInt.c GCapi.h GCfunc.h Nodes.c 00PrimInt.h GCengine.c GTstring.c Nodes.h Address.c GCengine.h GTstring.h Segment.c Nodes.h #ifndef Nodes_H_INCLUDED #define Nodes_H_INCLUDED struct GC_context; union Address; struct Nodes; typedef void (*Nodes_foreach_func_t )(struct GC_context *,union Address *); void Nodes_add(struct GC_context *cx, struct Nodes *base, union Address *x); void Nodes_addlist(struct GC_context *cx, struct Nodes *left, struct Nodes *right); void Nodes_delete(struct GC_context *cx, struct Nodes *x); void Nodes_foreach(struct GC_context *cx, struct Nodes *x, Nodes_foreach_func_t func); union Address * Nodes_get(struct GC_context *cx, struct Nodes *x, int n); struct Nodes * Nodes_getroot(struct GC_context *cx); int Nodes_length(struct GC_context *cx, struct Nodes *x); struct Nodes * Nodes_new(struct GC_context *cx); const char * Nodes_read(struct GC_context *cx, const char *str, struct Nodes **x, void *cont0); void Nodes_remove(struct GC_context *cx, struct Nodes *base, union Address *x); void Nodes_removeall(struct GC_context *cx, struct Nodes *base); void Nodes_set(struct GC_context *cx, struct Nodes *x, int n, union Address *arg); struct GTstring * Nodes_show(struct GC_context *cx, struct Nodes *x); unsigned int Nodes_tlvdecode(struct GC_context *cx, const char *str, struct Nodes **x); struct GTstring * Nodes_tlvencode(struct GC_context *cx, struct Nodes *x, unsigned int *length); #endif /*!Nodes_H_INCLUDED */ Address.h #ifndef Address_H_INCLUDED #define Address_H_INCLUDED struct GC_context; union Address; typedef void (* IPv4_apply_func_t)(struct GC_context *, unsigned char, unsigned char, unsigned char, unsigned char ); typedef void (* IPv6_apply_func_t)(struct GC_context *, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short ); #define Address_apply_(cx, obj, prefix) \ (Address_apply(cx, obj \, prefix##ipv4 \, prefix##ipv6 \ )) void Address_apply(struct GC_context *cx, union Address *x, IPv4_apply_func_t func_ipv4, IPv6_apply_func_t func_ipv6); void Address_delete(struct GC_context *cx, union Address *x); unsigned char Address_get_IPv4_m1(struct GC_context *cx, union Address *x); unsigned char Address_get_IPv4_m2(struct GC_context *cx, union Address *x); unsigned char Address_get_IPv4_m3(struct GC_context *cx, union Address *x); unsigned char Address_get_IPv4_m4(struct GC_context *cx, union Address *x); unsigned short Address_get_IPv6_m1(struct GC_context *cx, union Address *x); unsigned short Address_get_IPv6_m2(struct GC_context *cx, union Address *x); unsigned short Address_get_IPv6_m3(struct GC_context *cx, union Address *x); unsigned short Address_get_IPv6_m4(struct GC_context *cx, union Address *x); unsigned short Address_get_IPv6_m5(struct GC_context *cx, union Address *x); unsigned short Address_get_IPv6_m6(struct GC_context *cx, union Address *x); unsigned short Address_get_IPv6_m7(struct GC_context *cx, union Address *x); unsigned short Address_get_IPv6_m8(struct GC_context *cx, union Address *x); union Address * Address_getroot_IPv4(struct GC_context *cx); union Address * Address_getroot_IPv6(struct GC_context *cx); enum Tags Address_gettag(struct GC_context *cx, union Address *x); union Address * Address_new_IPv4(struct GC_context *cx); union Address * Address_new_IPv6(struct GC_context *cx); union Address * Address_newset_IPv4(struct GC_context *cx, unsigned char m1, unsigned char m2, unsigned char m3, unsigned char m4); union Address * Address_newset_IPv6(struct GC_context *cx, unsigned short m1, unsigned short m2, unsigned short m3, unsigned short m4, unsigned short m5, unsigned short m6, unsigned short m7, unsigned short m8); const char * Address_read(struct GC_context *cx, const char *str, union Address **x, void *cont0); void Address_set_IPv4_m1(struct GC_context *cx, union Address *x, unsigned char arg); void Address_set_IPv4_m2(struct GC_context *cx, union Address *x, unsigned char arg); void Address_set_IPv4_m3(struct GC_context *cx, union Address *x, unsigned char arg); void Address_set_IPv4_m4(struct GC_context *cx, union Address *x, unsigned char arg); void Address_set_IPv6_m1(struct GC_context *cx, union Address *x, unsigned short arg); void Address_set_IPv6_m2(struct GC_context *cx, union Address *x, unsigned short arg); void Address_set_IPv6_m3(struct GC_context *cx, union Address *x, unsigned short arg); void Address_set_IPv6_m4(struct GC_context *cx, union Address *x, unsigned short arg); void Address_set_IPv6_m5(struct GC_context *cx, union Address *x, unsigned short arg); void Address_set_IPv6_m6(struct GC_context *cx, union Address *x, unsigned short arg); void Address_set_IPv6_m7(struct GC_context *cx, union Address *x, unsigned short arg); void Address_set_IPv6_m8(struct GC_context *cx, union Address *x, unsigned short arg); struct GTstring * Address_show(struct GC_context *cx, union Address *x); unsigned int Address_tlvdecode(struct GC_context *cx, const char *str, union Address **x); struct GTstring * Address_tlvencode(struct GC_context *cx, union Address *x, unsigned int *length); #endif /*!Address_H_INCLUDED */ Segment.h #ifndef Segment_H_INCLUDED #define Segment_H_INCLUDED struct GC_context; union Address; struct Nodes; union Segment; typedef void (* Seg_apply_func_t)(struct GC_context *, union Address *, struct Nodes *); #define Segment_apply_(cx, obj, prefix) \ (Segment_apply(cx, obj \, prefix##seg \ )) void Segment_apply(struct GC_context *cx, union Segment *x, Seg_apply_func_t func_seg); void Segment_delete(struct GC_context *cx, union Segment *x); union Address * Segment_get_Seg_m1(struct GC_context *cx, union Segment *x); struct Nodes * Segment_get_Seg_m2(struct GC_context *cx, union Segment *x); union Address * Segment_get_m1(struct GC_context *cx, union Segment *x); struct Nodes * Segment_get_m2(struct GC_context *cx, union Segment *x); union Segment * Segment_getroot_Seg(struct GC_context *cx); enum Tags Segment_gettag(struct GC_context *cx, union Segment *x); union Segment * Segment_new_Seg(struct GC_context *cx); union Segment * Segment_newset_Seg(struct GC_context *cx, union Address *m1, struct Nodes *m2); const char * Segment_read(struct GC_context *cx, const char *str, union Segment **x, void *cont0); void Segment_set_Seg_m1(struct GC_context *cx, union Segment *x, union Address *arg); void Segment_set_Seg_m2(struct GC_context *cx, union Segment *x, struct Nodes *arg); void Segment_set_m1(struct GC_context *cx, union Segment *x, union Address *arg); void Segment_set_m2(struct GC_context *cx, union Segment *x, struct Nodes *arg); struct GTstring * Segment_show(struct GC_context *cx, union Segment *x); unsigned int Segment_tlvdecode(struct GC_context *cx, const char *str, union Segment **x); struct GTstring * Segment_tlvencode(struct GC_context *cx, union Segment *x, unsigned int *length); #endif /*!Segment_H_INCLUDED */ Address.c ( ) Nodes.c ( ) #include <assert.h> #include <ctype.h> #include <string.h> #include "00EnumTags.h" #include "Address.h" #include "00PrimInt.h" struct IPv4 { unsigned char m1; unsigned char m2; unsigned char m3; unsigned char m4; }; struct IPv6 { unsigned short m1; unsigned short m2; unsigned short m3; unsigned short m4; unsigned short m5; unsigned short m6; unsigned short m7; unsigned short m8; }; union Address { struct IPv4 m1; struct IPv6 m2; }; #include <assert.h> #include <ctype.h> #include "00EnumTags.h" #include "Address.h" #include "Nodes.h" struct Nodes { struct Nodes *link; union Address *m1; }; Segment.c ( ) #include <assert.h> #include <ctype.h> #include <string.h> #include "00EnumTags.h" #include "Address.h" #include "Nodes.h" #include "Segment.h" struct Seg { union Address *m1; struct Nodes *m2; }; union Segment { struct Seg m1; }; (TNT) TNT
(TNT) TNT
[fps] 140 120 100 80 60 40 130 120 110 100 90 80 70 60 50 40 30 480 20 60 80 100 40 360 420 0 0 80 [pixel] 160 240 320 120180240300 400 480 60 560 640 0 [pixel] (TNT) TNT
TNT DAPDNA DAPDNA TNT DAPDNA DAPDNA DAPDNA DAPDNA TNT DAPDNA (DAPDNA ) (DAPDNA ) ( ) http://www.trans-nt.com/ E-MAIL : info@trans-nt.com / TEL : 03-5604-1188 : DAPDNA